Обнаружена ошибка при использовании переменной внутри CTE в oracle - PullRequest
0 голосов
/ 02 мая 2020

Я хочу написать приведенный ниже SQL запрос (используется на sql сервере) в Oracle SQL разработчику:

DECLARE @myVAR int;
SET @myVAR = 11;
WITH myCTE
AS (SELECT * FROM abc WHERE HostCount = @myVAR)
SELECT * FROM myCTE

1 Ответ

1 голос
/ 02 мая 2020

Для вашего случая:

  • DECLARE и INT ключевые слова могут быть заменены на VAR и NUMBER соответственно

  • Переменная myVAR квалифицируется как : вместо @, вместо знака равенства (=) используется оператор присваивания (:=) и вложен между BEGIN и END ключевыми словами.

  • Операторы в командной строке должны заканчиваться ;, а затем /.

Код:

SQL> VAR myVAR NUMBER;
SQL> BEGIN :myVAR := 11; END; 
  2  /

PL/SQL procedure successfully completed
myVAR
---------
11

SQL> WITH myCTE
  2  AS (SELECT * FROM abc WHERE HostCount = :myVAR)
  3  SELECT * FROM myCTE;
  4  /

ID    COL1   HOSTCOUNT
---- ------ ----------
..     ...          11
..     ...          11

myVAR
---------
11
...