Что такое SQL Server эквивалент EXECUTE IMMEDIATE INTO в Oracle - PullRequest
1 голос
/ 10 апреля 2019

Что такое эквивалент 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;

/

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Нельзя установить скалярную переменную для результатов динамического запроса, но вы можете вставить результаты в табличную переменную.Это работает.

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;
0 голосов
/ 10 апреля 2019

Эквивалент 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
...