同时尝试创建查询游标,如下所示:
DECLARE CURSOR Query1
IS
SELECT * FROM RACE
WHERE Race_Time='22-SEP-14 12.00.00.000000000';
BEGIN
OPEN Query1;
END;我得到以下错误。匿名块已完成。有人知道怎么解决这个问题吗?我尝试在declare之前设置'SET SERVEROUTPUT ON;‘,但这似乎不能修复错误。提前感谢!
发布于 2015-04-04 04:05:15
dbms_output似乎已关闭
如果您将SET SERVEROUTPUT ON;放在脚本的开头,您可以看到输出结果。
也可以查看dbms_output窗口(查看,然后查看数据库管理系统输出),然后按数据库管理系统输出窗口顶部的"+“,然后选择一个打开的数据库
发布于 2014-03-14 06:09:55
“匿名块已完成”表示您的PL/SQL代码已成功执行。显示:尝试使用output语句...
例如:
BEGIN
dbms_output.put_line ('Hello, world!');
END;发布于 2014-03-14 06:36:11
如果希望在PL/SQL中控制该进程,可以执行以下操作
DECLARE
l_race_rec race%rowtype;
CURSOR Query1
IS
SELECT *
FROM RACE
WHERE Race_Time='22-SEP-14 12.00.00.000000000';
BEGIN
OPEN Query1;
LOOP
FETCH query1 INTO l_race_rec;
EXIT WHEN query1%notfound;
dbms_output.put_line( l_race_rec.column1 || ' ' || l_race_rec.column2 || ... || l_race_rec.columnN );
END LOOP;
CLOSE Query1;
END;BEGIN
FOR x IN( SELECT *
FROM RACE
WHERE Race_Time='22-SEP-14 12.00.00.000000000')
LOOP
dbms_output.put_line( x.column1 || ' ' || x.column2 || ... || x.columnN );
END LOOP;
END;如果您使用的是SQL*Plus,您还可以执行以下操作
VAR rc REFCURSOR;
BEGIN
OPEN :rc
FOR SELECT *
FROM race
WHERE race_time = '22-SEP-14 12.00.00.000000000';
END;
PRINT rc如果race_time真的是一个timestamp,那么您应该真正地将timestamp与另一个timestamp进行比较,而不是将timestamp与字符串进行比较。使用带有显式格式掩码的显式转换,以避免由于不同的会话具有不同的NLS设置而导致的错误
WHERE race_time = to_timestamp( '22-SEP-14 12.00.00.000000000',
'DD-MON-RR HH24:MI:SS.FF9' )当然,我不确定您为什么要在这里首先使用timestamp --您似乎不太可能真正知道比赛开始的纳秒。
https://stackoverflow.com/questions/22391973
复制相似问题