在 Oracle sql 中声明一个变量并 select 它

declare a variable and select it in Oracle sql

在 SQL 服务器中,我可以执行以下操作来声明和 select 一个虚拟变量:

declare @dummy decimal;
set @dummy = 0;
select @dummy as dummy;

如何在 Oracle sql 中完成?以下不起作用:

declare dummy decimal := 0;
select dummy as dummy;

编辑:
目的是能够用虚拟查询替换从客户端代码(在 C# 中,FWIW 中)使用的现有查询字符串(它本身是从数据库中检索的)。

您可以按如下方式使用DEFINE

SQL> DEFINE DUMMY=5;
SQL> SELECT &DUMMY AS DUMMY FROM DUAL;

     DUMMY
----------
         5

SQL>

使用 DUAL table:

SELECT 0 AS dummy FROM DUAL;

或者,在 SQL/Plus 客户端(以及一些其他客户端,例如 SQL Developer)中,创建一个绑定变量:

VARIABLE dummy NUMBER;
BEGIN :dummy := 0; END;
/
SELECT :dummy AS dummy FROM DUAL;

或者,从 Oracle 12c 开始,您可以使用 PL/SQL 和 return 游标:

DECLARE
  rc      SYS_REFCURSOR;
  v_dummy NUMBER := 0;
BEGIN
    OPEN rc FOR SELECT v_dummy AS dummy FROM DUAL;
    DBMS_SQL.RETURN_RESULT(rc);
END;
/

The aim is to be able to replace an existing query string (which in itself is retrieved from a database), used from a client code (in C#, FWIW), with a dummy query.

使用参数化查询并在要使用该值的位置传入绑定变量。

在PL/SQL?

SQL> declare
  2    l_dummy number := 0;
  3    retval  number;
  4  begin
  5    retval := l_dummy;
  6
  7    -- or:
  8    select l_dummy into retval from dual;
  9  end;
 10  /

PL/SQL procedure successfully completed.

SQL>