Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ... / 12 сообщений из 12, страница 1 из 1
19.11.2019, 13:47
    #39891064
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
как изобразить конструкцию в MS SQL, как в Oracle

отправить переменную

Код: plsql
1.
2.
3.
begin
    my_procedure(myid);
end;



и потом в текущей сессии, пока она открыта получать ответ

Код: plsql
1.
select myid from my_function



в оракл всё лежит в BODY
...
Рейтинг: 0 / 0
19.11.2019, 13:58
    #39891075
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
...
Рейтинг: 0 / 0
19.11.2019, 14:15
    #39891083
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
yemets63
как изобразить конструкцию в MS SQL, как в Oracle

отправить переменную
Код: plsql
1.
2.
3.
begin
    my_procedure(myid);
end;


и потом в текущей сессии, пока она открыта получать ответ
Код: plsql
1.
select myid from my_function


в оракл всё лежит в BODY
По описанию непонятно, что нужно, по крайней мере тем, кто не работал с Ораклом.
...
Рейтинг: 0 / 0
19.11.2019, 14:29
    #39891098
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
...
Рейтинг: 0 / 0
19.11.2019, 14:33
    #39891101
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
yemets63,

звучит как контекст, но при эотм и как DECLARE @variable
...
Рейтинг: 0 / 0
19.11.2019, 18:39
    #39891298
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
yemets63,

Вы с какой целью интересуетесь? Для отладки существуют PRINT @var или RAISERROR(@var,10,1);
...
Рейтинг: 0 / 0
05.12.2019, 00:35
    #39898353
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
прошу прощения, я вернулся в топик,
и так в оракле есть пакетные переменные, достаточно удобные для работы с грудой переменных, которые просто ускоряют всё и всея.

в Oracle есть описание и есть тело, а как это всё выглядит в MS SQL, прилагаю пример текста из Oracle, просто присвоение значений пакетным переменным и получение, понятно делает и больше, просто для примера.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
create or replace package BatchVarOra is
/*****************************************************************/
  PrjID          number;          -- ProjectID
  UserID         number;          -- UserID
  PCIP           varchar2(80);    -- PCNameIPAdresse
/*****************************************************************/
  function  Get_UserID     return number;
  function  Get_PCIP       return Varchar2;
----------------------------------------------
----------------------------------------------
----------------------------------------------
  procedure Set_UserID(MD number);
  procedure Set_PCIP(MD Varchar2);
----------------------------------------------
/*****************************************************************/
--WNDS = Write Not Data Set
--RNDS = Read Not Data Set
--WNPS = Write Not Package State
--RNPS = Read Not Package State
  pragma restrict_references (Get_UzerID,WNDS, WNPS);
  pragma restrict_references (Get_PCIP,WNDS, WNPS);
----------------------------------------------
----------------------------------------------
  pragma restrict_references (Set_UserID ,WNDS, RNDS, RNPS);
  pragma restrict_references (Set_PCIP ,WNDS, RNDS, RNPS);
----------------------------------------------
----------------------------------------------
/*****************************************************************/
end BatchVarOra;


create or replace package body BatchVarOra is
/-----------------------------------------------------------------/
  function Get_UserID return number is
  begin
    return(UserID);
  end;
/*****************************************************************/
  function Get_PCIP return Varchar2 is
  begin
    return(PCIP_id);
  end;
/-----------------------------------------------------------------/
  procedure Set_UserID(MD number) is
  begin
    User_ID := MD;
  end;
/*****************************************************************/
  procedure Set_PCIP(MD Varchar2) is
  begin
    PCIP := MD;
  end;
/*****************************************************************/
end BatchVarOra;



ну а в запросах, присвоение

Код: plsql
1.
begin BatchVarOra.set_userid(1515151); end;



и использование

Код: plsql
1.
select * from where куча_условий and user_id=BatchVarOra=get_userid
...
Рейтинг: 0 / 0
05.12.2019, 02:05
    #39898359
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
пакетные переменные ТС'у нужны.
когда в коде он может задать связанный список переменных и их значений, что бы потом в достаточно простой форме обращаться к значениям

в сиквеле ближайшим аналогом является SESSION_CONTEXT, НО:
1) он только с 2016,
2) присвоение значений осуществяется через хранимую процедуру что не очень лаконично выглядит в плане кода,
3) чтение из конкеста возвращает sql_variant, поэтому необходимо явное приведение к типу
4) ограничен по размеру в 1 мегабайт на сессию (ранее аналог был context_info у него размер хранения был еще меньше 128 байт)

присвоение:
Код: sql
1.
2.
EXEC sp_set_session_context 'my_var_1', 'this is test string';  
EXEC sp_set_session_context 'my_var_2', 1000;  



чтение:
Код: sql
1.
SELECT * FROM tab WHERE [id] = CAST(SESSION_CONTEXT(N'my_var_2') AS INT) AND [name] = CAST(SESSION_CONTEXT('my_var_1') AS VARCHAR(20)); 




из возможных альтернатив можно поиграться с табличными типами с парой процедур (запись/чтение)

из хардкорного варианта: нарисовать CLR UDT с мутаторными методами.


yemets63,
а чем вас обычные переменные не устраивают? или не хочется каждый раз объявление писать? :)
Код: sql
1.
2.
3.
4.
5.
6.
declare @i int, @j int;

set @i = 10;
set @j = 20

select * from tab where [id] = @i and [id2] = @j;
...
Рейтинг: 0 / 0
05.12.2019, 05:26
    #39898367
Gerros
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
yemets63,
в вызывающем коде создать временную таблицу, и заполнить её, например, одной строкой, в которой для каждой переменной есть своя колонка.
в запросах брать данные из этой таблицы.
...
Рейтинг: 0 / 0
05.12.2019, 11:22
    #39898477
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
felix_ff,

ко мне пришла база, большая достаточно, и ее тормоза заключаются в части запросов и триггеров, которые выполняются не по конкреттной группе условий, а по всей таблице, в итоге, если в оракл у меня подобное летает за миллион записей, то здесь тысяча еле еле ползает. а с базой мне этой работать предстоит долго, и что бы нервы не тратить, нужно в порядок привести всё.

параллельно такая же проблема с MySQL, но это уже другой форум
...
Рейтинг: 0 / 0
05.12.2019, 14:43
    #39898610
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
yemets63,

системы pl-sql и t-sql имеют парадигмы обработки данных, ни в чём не схожие. Методами PL-SQL здесь вы производительности не получите. Т.е. PL потребляет г-но код вполне успешно, т.к. он в первую очередь PL, во вторую SQL (или даже в третью). Здесь требуется использовать реляционное мышление (понимание работы с множествами данных), а не процедурное (пошаговая обработка).
...
Рейтинг: 0 / 0
05.12.2019, 14:54
    #39898623
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
Владислав Колосов
yemets63,

системы pl-sql и t-sql имеют парадигмы обработки данных, ни в чём не схожие. Методами PL-SQL здесь вы производительности не получите. Т.е. PL потребляет г-но код вполне успешно, т.к. он в первую очередь PL, во вторую SQL (или даже в третью). Здесь требуется использовать реляционное мышление (понимание работы с множествами данных), а не процедурное (пошаговая обработка).
Угу,
Re: как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ... [new]
yemets63-у нужно либо изучить сиквел, либо взять готового специалиста. Программированием на сиквеле с подходами оракла ничего хорошего не получить.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ... / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]