2016-11-15 105 views
1

我有一個簡單的查詢,可以在蟾蜍中運行。如何在Oracle中的SELECT語句中使用變量PL-SQL

select * from my_table 
where my_id = 11111; 

爲什麼我不能從蛤蟆運行相同的查詢這次聲明一個變量並在where子句中使用它?

在SQL Server中我:

declare @testID int 
set @testID = 11111 
select * from my_table 
    where my_id = @testID; 

我怎樣才能做到在Oracle 11g中的一樣嗎?

+2

depends ..如果你正在做這個測試,並且你希望在運行時捕獲這個值,你可以在my_table 處選擇*,其中my_id =&testID;&符號表示執行時需要用戶輸入的變量。在Oracle中謹慎對待這一點,就好像你有一個像Mike&Jon的Paint和Body這樣的名字它可能會要求你定義Jon變量! (這可以禁用:請參閱[這裏](http://stackoverflow.com/questions/18735499/how-to-escape-ampersand-in-toad)) – xQbert

+0

對於類似的問題,早先給出的答案。 看看[這裏](http://stackoverflow.com/questions/7163996/how-to-select-into-a-variable-in-pl-sql-when-the-result-might-be-null) – Hema

回答

0

PLSQL與SQL SERVER不同。它有它自己的語法。看你如何做到這一點如下:

DECLARE 
    var NUMBER := 1; 
    var2 my_table%ROWTYPE; 
BEGIN 
    SELECT * 
    INTO var2 
    FROM my_table 
    WHERE my_id = var; 

    --To display result you need to add dbsm_output.put_line function. 

    dbms_output.put_line(var2.<columnname>); 

Exception 
When others then 
Null;  
END; 

注:假設是查詢將返回一個單一的行。

+0

好吧,似乎工作,但我沒有看到任何結果。 – PrivateJoker

+0

要看到你首先需要使用dbms_output.put_line函數來顯示它。 – XING

+0

我還沒有看到結果。 (我的輸出在蟾蜍中啓用) 聲明 p_jobID number(6):= 111111; p_row JOBS%rowtype; begin select * into p_row from my_table 其中id = p_jobID; Dbms_Output.put_line(:p_row); 結束; – PrivateJoker

2

蟾蜍(或SQL開發者),你可以這樣做:

select * from my_table 
where my_id = :testID; 

當你運行它,你會被提示輸入該testId綁定變量的值。

相關問題