簡體   English   中英

在 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表:

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 並返回 cursor:

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;
/

目的是能夠用虛擬查詢替換從客戶端代碼(在 C#,FWIW 中)使用的現有查詢字符串(其本身是從數據庫中檢索的)。

使用參數化查詢並傳入要使用該值的綁定變量。

在 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM