执行以下代码时,它只是说过程已完成,并且不打印我想要的信息(firstName,lastName),然后是下表中select查询的其他值.
CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (id_actor char)
AS
CURSOR quote_recs IS
SELECT a.firstName,a.lastName, m.title, m.year, r.roleName ,q.quotechar from quote q, role r,
rolequote rq, actor a, movie m
where
rq.quoteID = q.quoteID
AND
rq.roleID = r.roleID
AND
r.actorID = a.actorID
AND
r.movieID = m.movieID
AND
a.actorID = id_actor;
BEGIN
FOR row IN quote_recs LOOP
DBMS_OUTPUT.PUT_LINE('a.firstName' || 'a.lastName');
end loop;
END PRINT_ACTOR_QUOTES;
/
Run Code Online (Sandbox Code Playgroud)
当设置服务器输出时,我得到
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
Run Code Online (Sandbox Code Playgroud)
多次!
我需要在pl/sql中调试以计算程序的次数,我想使用:
SELECT systimestamp FROM dual INTO time_db;
DBMS_OUTPUT.PUT_LINE('time before procedure ' || time_db);
Run Code Online (Sandbox Code Playgroud)
但我不明白输出的位置,如何将其重定向到包含我想要收集的所有数据的日志文件?
我有一个从shell脚本中调用的SQL脚本,需要很长时间才能运行.它目前包含dbms_output.put_line各个方面的陈述.这些打印语句的输出显示在日志文件中,但仅在脚本完成后才显示.
有没有办法确保在脚本运行时输出显示在日志文件中?
我正在使用SQL Developer,并希望使用DBMS_OUTPUT.PUT_LINE()将变量的内容输出到控制台.我正在运行以下代码,添加数字1到5,但我没有看到任何输出.
SET SERVEROUTPUT ON;
DECLARE
n_counter NUMBER := 5; -- Substitute this variable
n_sum NUMBER := 0;
BEGIN
WHILE n_counter != 0
LOOP
n_sum := n_sum + n_counter;
n_counter := n_counter -1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(n_sum);
END;
Run Code Online (Sandbox Code Playgroud)
此外,您是否知道比非常密集的Oracle PL/SQL文档更好的解决问题资源?[类似于Java SE7 API?]
我试图调试我的动态查询,dbms_output但似乎查询字符串对于dbms_output缓冲区来说太长了.
我有 :
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "SYS.DBMS_OUTPUT", line 148
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)
知道如何增加缓冲区大小吗?
我开始将Datagrip用于需要使用DBMS_OUTPUT.PUT_LINE. 在此之前,我使用的是 Oracle SQL 开发人员,并且能够通过添加以下内容来使用 DBMS_OUTPUT:
SET serveroutput ON;
Run Code Online (Sandbox Code Playgroud)
有一个相关问题显示了如何启用或禁用显示 DBMS_OUTPUT 缓冲区的内容,但这仅适用于数据库控制台工具窗口。如何将其应用于任何 .sql 文件?目前,我正在复制 .sql 文件的内容并在控制台工具窗口中运行它,但必须有更好的方法。
是否会dbms_output.put_line降低plsql代码的性能?
我有一个相当耗时的PL/SQL块,可以从分子结构中构建指纹.我想将输出打印到SQL*Plus控制台,以提供有关已处理的结构数量的反馈.我可以这样做dbms_output.put_line
但是,每次调用新行时都会写入.我想覆盖这条线.
例如,目前我有以下内容.
Structure x of y processed
Structure x of y processed
Structure x of y processed
Structure x of y processed
Run Code Online (Sandbox Code Playgroud)
最后,当我处理成千上万的结构记录时,我填满了缓冲区.
有没有一种方法可以用来覆盖最后一条输出线?
我有三个包含以下数据的表格
表3 :
Table1_id Table2_id
1 1
1 2
1 3
2 1
2 3
3 2
Run Code Online (Sandbox Code Playgroud)
表2:
Table2_id Name
1 A
2 B
3 C
Run Code Online (Sandbox Code Playgroud)
表格1 :
Table1_id Name
1 P
2 Q
3 R
Run Code Online (Sandbox Code Playgroud)
我有一个问题,我需要返回所有table1_id,其中有表3中所有Table2_ids的条目.
即.我想要我的输出
Table1_id
1
Run Code Online (Sandbox Code Playgroud)
我找到了一个使用count()的解决方案.但有没有办法使用all()或exists()来解决查询?
我正在学习游标,我无法打印中的布尔值
dbms_output.put_line();
Run Code Online (Sandbox Code Playgroud)
代码是
DECLARE
CURSOR c_employees_3i is
SELECT * FROM employees_3i;
row_count BOOLEAN;
BEGIN
OPEN c_employees_3i;
row_count := c_employees_3i%isopen;
Dbms_Output.put_line(bool_to_text(row_count));
CLOSE c_employees_3i;
END;
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
ORA-06550: line 8, column 22:
PLS-00201: identifier 'BOOL_TO_TEXT' must be declared
ORA-06550: line 8, column 1:
PL/SQL: Statement ignored
Run Code Online (Sandbox Code Playgroud)
请帮我纠正错误.谢谢