Что такое эквивалент 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;
/
Моя цель - сохранить значение, возвращаемое динамическим запросом, в заданную переменную. Я только что дал, например. для вашего быстрого понимания. Пожалуйста помоги мне с этим.
Скажем, вместо тотала нет. строк я хочу сохранить значение SUM данного столбца в переменной. Тогда каким должен быть мой код. Просто замените запрос, например, QRY:=выберите сумму (количество) из production.product
Эквивалентом T-SQL для EXECUTE IMMEDIATE является Динамический 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
Вы не сохраняете значение общего количества возвращенных строк. Это моя цель и цель EXECUTE IMMEDIATE INTO
Мне нужен способ, с помощью которого я могу сохранить значение общего количества строк, возвращаемое из оператора select.
Вы не выполняете его динамически. Я хочу выполнить его динамически и сохранить его значение в переменной. Пожалуйста, выберите другой вариант, например сумму данного столбца в таблице, и сохраните его в переменной.
Вы не можете установить скалярную переменную для результатов динамического запроса, но вы можете вставить результаты в табличную переменную. Это работает.
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;
Спасибо, сэр. Вы очень полезны. Все работает, и я проверил свой ответ
Превосходно! Я рад, что помог.
Мне нужен способ, с помощью которого я могу сохранить значение общего количества строк, возвращаемое из оператора select.