2016-12-06 161 views
-2

我需要在select語句中使用變量,但我不知道我做錯了什麼。在Oracle SQL查詢中使用變量

如果我運行測試腳本波紋管,它的正常工作:

DECLARE 
    SalesOrderId VARCHAR(10); 
BEGIN 
    SalesOrderId := '138296584'; 

    dbms_output.put_line(SalesOrderId); 
END; 

但是,如果我把一個選擇查詢內開始末端塊,不工作。下面的代碼:

DECLARE 
    SalesOrderId VARCHAR(10); 
BEGIN 
    SalesOrderId := '138296584'; 

    dbms_output.put_line(SalesOrderId); 

    SELECT * FROM tblOrders tbl WHERE tbl.SalesOrderId = SalesOrderId; 
END; 

,並拋出錯誤:

[Error] Execution (8: 5): ORA-06550: line 8, column 5: PLS-00428: an INTO clause is expected in this SELECT statement 

我做錯了什麼?

謝謝。

+0

一位不願具名的PL/SQL塊不能返回表數據。你可以編寫一個執行此操作的PL/SQL函數(一個流水線函數),或者讓你的數據塊在控制檯上輸出數據(DBMS_OUTPUT),或者使用帶綁定變量的SQL('WHERE tbl.SalesOrderId =:SalesOrderId;')。 –

回答

0

有錯誤很明顯,你需要存儲的輸出某處(意義),所以使用INTO

SELECT tbl.SalesOrderId,tbl.column1 
INTO varSalesOrderId,varColumn1 
FROM tblOrders tbl 
WHERE tbl.SalesOrderId = SalesOrderId; 
+0

對於真正的我的查詢做一些左連接,我從這些表中選擇列,所以我沒有一個簡單的數據在選擇和入不工作。 ORA-06550:第16行第5列: PL/SQL:ORA-00947:值不足 ORA-06550:第8行第5列: PL/SQL:錯誤:執行錯誤: SQL語句被忽略 –

+0

@JoseFelipeBlumdeAraujo您可以將'INTO'用於多個變量。請參閱編輯。 – sagi

+0

好了,現在我做了正確的事情,我把我正在使用的所有列,但其他錯誤拋出:[錯誤]執行(1:3):ORA-01843:不是有效月份ORA-06512:在行15線路錯誤在:SalesOrderId:= 138296584 –