Oracle中的游标使用问题
SQL code:
DECLARE
var_cursor SYS_REFCURSOR;
BEGIN
procedure_name(p_1 => NULL,
p_2 => NULL,
p_3 => NULL,
p_cursor => var_cursor);
FOR i IN var_cursor LOOP
dbms_output.put_line(i.col_name);
END LOOP;
END;
我的意图是:
首先定义一个游标var_cursor。
然后执行一个存储过程procedure_name,它有四个参数,前三个都给他NULL,第四个是一个out游标,我将它赋给了上面定义的var_cursor。
然后遍历游标,把值输出。
报错在FOR i IN var_cursor LOOP这里,错误是PLS-00221: 'var_cursor' is not a procedure or is undefined。
为啥会报错,帮忙看一下。谢谢大家。
p_cursor是sys_refcursor类型传出参数吗
FOR i IN var_cursor LOOP
dbms_output.put_line(i.col_name);
END LOOP;
确认var_cursor处于打开状态
改成
loop
fetch var_cursor into v1,v2,v3;--变量要定义
exit when var_cursor%notfound;
dbms_output.put_line(v1);
end;
close var_cursor;
是不是要用
:var_cursor
用系统游标
sys_refcursor
在不行 加群 :2987841
sys_refcursor
不支持for in loop获取值
只能用fetch的方式
SQL> declare
2 var_cursor SYS_REFCURSOR;
&n
相关问答:
<?php
getenv("ORACLE_HOME");
$conn=ocilogon("test","test","test_db");
if($conn)
echo success;
&nb ......
各大老师好,请教一个问题.
我设置了一个oracle字段,varchar(3000),然后插入一条数据长度才1000,就报错了.如:net.sf.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
Caused ......
大家好,我现在把oracle服务器上面的原始文件,下载到本机了.我想在本机访问数据库怎么设置啊.是不是类似可以建立一个什么虚拟服务器来实现.请大家出出主意
引用
大家好,我现在把oracle服务器上面 ......
我在创建数据库的时候用的名字为oracle10,但是创建好后,在默认的目录下显示的名称却是oracle10g,这是为什么?
你看的 10g是安装目录吧
SQL> select name from v$database;
NAME
---------
ORCL
......