假设我有一张虚拟的table。
create table dummy_table as
select 'A' letter from dual
union all
select 'B' letter from dual;
字符串
.并需要将letter列中的所有值连接到一个clob变量中,每个值都从一个新行开始。
我一直在尝试沿着这些路线,但它不工作,因为我的PL/SQL的知识是不幸的有限。下面的代码是不工作,但传达的想法。
var my_text clob; -- def? define? declare?
begin
for c in ( select letter from dummy_table )
loop
my_text := my_text || c.letter || chr(10);
end loop;
end;
型
最后,需要能够输出结果
print(my_text); -- dbms_output.put_line(my_text)? dbms_sql.return_result(my_text)?
型
虽然它说PL/SQL procedure successfully completed.
,但打印my_value
会返回一个空变量。
使用SQL Developer和Oracle 19 c。
2条答案
按热度按时间u2nhd7ah1#
VAR
是VARIABLE
的缩写,是一个SQLPlus命令,它定义了在客户端应用程序(即SQLPlus、SQL Developer或SQLcl)中使用的绑定变量。它不是PL/SQL命令。同样,PRINT
是一个SQL*Plus命令,不是SQL或PL/SQL语言的一部分。如果你想使用一个绑定变量,那么当你在SQL或PL/SQL中使用它时,你需要用
:
作为前缀。字符串
但是,如果你想在PL/SQL块中执行它(并且不使用基于客户端的绑定变量),那么
DECLARE
一个局部变量并使用它:型
vwoqyblh2#
一种选择是创建一个返回clob的函数,并使用
dbms_output
显示结果:字符串