powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
12 сообщений из 12, страница 1 из 1
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
    #39891064
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как изобразить конструкцию в MS SQL, как в Oracle

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

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



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

Код: plsql
1.
select myid from my_function



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

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


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


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

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

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

в 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
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
    #39898359
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пакетные переменные ТС'у нужны.
когда в коде он может задать связанный список переменных и их значений, что бы потом в достаточно простой форме обращаться к значениям

в сиквеле ближайшим аналогом является 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
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
    #39898367
Gerros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,
в вызывающем коде создать временную таблицу, и заполнить её, например, одной строкой, в которой для каждой переменной есть своя колонка.
в запросах брать данные из этой таблицы.
...
Рейтинг: 0 / 0
как изобразить конструкцию в SQL. В текущей сесси отправить значение в переменную и ...
    #39898477
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

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

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

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

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


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