#oracle11g #sql-server-2012 #dynamic-sql
#oracle11g #sql-server-2012 #динамический-sql
Вопрос:
Что такое эквивалент SQL Server EXECUTE IMMEDIATE INTO
в Oracle?
Например.
DECLARE QRY varchar(100);
val int;
BEGIN
QRY:='select count(*) from production.product';
**EXECUTE IMMEDIATE** QRY **into** val;
dbms_output.put_line(val);
END;
/
Комментарии:
1. Мне нужен способ, с помощью которого я могу сохранить значение общего количества строк, возвращаемое из оператора select.
2. Моя цель — сохранить значение, возвращаемое из динамического запроса, в заданную переменную. Я только что привел пример, например, для вашего быстрого понимания. пожалуйста, помогите мне в этом.
3. Допустим, вместо общего количества строк я хочу сохранить значение суммы данного столбца в переменной. Тогда каким должен быть мой код. Просто замените запрос следующим образом: QRY:=выберите сумму (количество) из production.product
Ответ №1:
Вы не можете установить скалярную переменную для результатов динамического запроса, но вы можете вставить результаты в табличную переменную. Это работает.
DECLARE @tbl TABLE (RowCnt INT NULL);
DECLARE
@QRY varchar(100);
BEGIN
SET @QRY = 'select <Aggregate Function> from tableName'; --Builds the dynamic query
INSERT @tbl
(
RowCnt
)
EXECUTE(@QRY); --Executes the query
SELECT
*
FROM @tbl;
END;
Комментарии:
1. Спасибо, сэр. Вы очень полезны. Все это работает, и я подтвердил свой ответ
2. Отлично! Я рад, что помог.
Ответ №2:
Эквивалентом T-SQL для НЕМЕДЛЕННОГО ВЫПОЛНЕНИЯ является динамический Sql.
DECLARE @intCount int
EXECUTE sp_executesql N'select @intCount=count(*) from product', N'@intCount int output', @intCount output;
Print(@intCount)
В качестве альтернативы вы можете использовать
DECLARE @intCount2 int
SELECT @intCount2 = count(*) from product
Комментарии:
1. Вы не сохраняете значение общего возвращаемого количества строк. Это моя цель и цель НЕМЕДЛЕННОГО ВЫПОЛНЕНИЯ В
2. Мне нужен способ, с помощью которого я могу сохранить значение общего количества строк, возвращаемое из оператора select.
3. Вы не выполняете его динамически. Я хочу выполнить его динамически и сохранить его значение в переменной. Пожалуйста, выберите какой-нибудь другой вариант, например, сумму заданного столбца в таблице, и сохраните его в переменной.