2012-01-04 42 views
21

我想在Oracle中聲明和顯示變量。如何在Oracle中聲明和顯示變量

在T-SQL我會做這樣的事情

DECLARE @A VARCHAR(10) --Declares @A 
SELECT @A = '12' --Assigns @A 
SELECT @A --Displays @A 

我如何在Oracle中做到這一點。

回答

34

如果你在談論PL/SQL,你應該把它放在一個匿名塊中。

DECLARE 
    v_text VARCHAR2(10); -- declare 
BEGIN 
    v_text := 'Hello'; --assign 
    dbms_output.Put_line(v_text); --display 
END; 
+0

對不起,以恢復舊帖子。這個沒有解決原始問題的部分 - 至少對我來說 - 是dbms_output.put_line在T-SQL中有效地執行了一個PRINT語句。 David發佈的內容以及我正在尋找的內容是最後的'SELECT'語句返回結果集 - 可以由客戶端應用程序使用。你知道如何做到這一點? 謝謝。 – InbetweenWeekends 2014-11-20 15:55:20

+0

'dbms_output.Put_line(v_text);'在T-SQL中的作用與'PRINT @v_text;'相當......如果您記得在SQL開發人員中將您的Dbms輸出窗口連接到與您的查詢相同的Oracle連接! – 2015-04-14 13:11:28

+1

如果您希望在腳本輸出面板中有您的Dbms輸出語句,這是一個快速簡單的教程。 http://www.thatjeffsmith.com/archive/2012/05/enabling-dbms_output-by-default-in-sql-developer/ – MPaul 2016-01-12 15:08:43

7

如果用sqlplus可以定義這樣一個變量:

define <varname>=<varvalue> 

而且可以通過顯示值:

define <varname> 

,然後用它在查詢中,例如:

select * 
from tab1 
where col1 = '&varname'; 
+0

'&varname'語法非常有用,謝謝 – Nacht 2016-05-11 23:00:21

1

你最近sw從MySQL癢癢,現在渴望在Oracle中更簡單的命令的邏輯等價物?因爲對我來說就是這樣,我也有同樣的問題。此代碼會給你一個快速和骯髒的打印我想這是你在找什麼:

Variable n number 
begin 
    :n := 1; 
end; 
print n 

中間部分是PL/SQL位結合的變量。來自print n的輸出是以列的形式出現的,恐怕不會給出n的值。當我在蟾蜍11運行它,它返回這樣

 n 
--------- 
     1 

我希望幫助

2

如果您正在使用PL/SQL,然後下面的代碼應該工作:

集SERVEROUTPUT上 - 檢索和顯示緩衝器

DECLARE

v_text VARCHAR2(10); -- declare 

BEGIN

v_text := 'Hello'; --assign 
dbms_output.Put_line(v_text); --display 

END;

/- 這必須用於執行pl/sql腳本