【发布时间】:2012-02-02 05:07:26
【问题描述】:
我想在 Oracle 中声明并显示一个变量。
在 T-SQL 中我会做这样的事情
DECLARE @A VARCHAR(10) --Declares @A
SELECT @A = '12' --Assigns @A
SELECT @A --Displays @A
我如何在 Oracle 中做到这一点。
【问题讨论】:
我想在 Oracle 中声明并显示一个变量。
在 T-SQL 中我会做这样的事情
DECLARE @A VARCHAR(10) --Declares @A
SELECT @A = '12' --Assigns @A
SELECT @A --Displays @A
我如何在 Oracle 中做到这一点。
【问题讨论】:
确保服务器输出开启,否则输出不会显示;
sql> 设置服务器输出;
declare
n number(10):=1;
begin
while n<=10
loop
dbms_output.put_line(n);
n:=n+1;
end loop;
end;
/
输出: 1 2 3 4 5 6 7 8 9 10
【讨论】:
如果您使用的是 pl/sql,那么下面的代码应该可以工作:
将服务器输出设置为 -- 以检索和显示缓冲区
DECLARE
v_text VARCHAR2(10); -- declare
BEGIN
v_text := 'Hello'; --assign
dbms_output.Put_line(v_text); --display
END;
/
-- 这必须用于执行 pl/sql 脚本
【讨论】:
您是否最近从 MySQL 切换到了 Oracle 中更简单的命令的逻辑等价物?因为对我来说就是这种情况,我也有同样的问题。这段代码会给你一个快速而肮脏的打印,我认为这是你正在寻找的:
Variable n number
begin
:n := 1;
end;
print n
中间部分是绑定变量的 PL/SQL 位。 print n 的输出是列形式的,恐怕不会只给出 n 的值。当我在 Toad 11 中运行它时,它会像这样返回
n
---------
1
希望对你有帮助
【讨论】:
如果使用 sqlplus,你可以这样定义一个变量:
define <varname>=<varvalue>
您可以通过以下方式显示该值:
define <varname>
然后在查询中使用它,例如:
select *
from tab1
where col1 = '&varname';
【讨论】:
如果你在谈论 PL/SQL,你应该把它放在一个匿名块中。
DECLARE
v_text VARCHAR2(10); -- declare
BEGIN
v_text := 'Hello'; --assign
dbms_output.Put_line(v_text); --display
END;
【讨论】:
dbms_output.put_line 在 T-SQL 中有效地执行了 PRINT 语句。 David 发布的内容和我正在寻找的是最后一个 SELECT 语句返回一个结果集 - 客户端应用程序可以使用该结果集。你知道如何做到这一点吗?谢谢。
dbms_output.Put_line(v_text); 相当于 T-SQL 中的 PRINT @v_text;...如果您记得将 SQL 开发人员中的 Dbms 输出窗口连接到与查询相同的 Oracle 连接!跨度>