当前位置: 代码迷 >> Oracle管理 >> 简单的存储过程请问
  详细解决方案

简单的存储过程请问

热度:60   发布时间:2016-04-24 05:05:18.0
简单的存储过程请教
create or replace procedure test as
Cursor cursor is select pk_corp from bd_corp; name1 varchar(20);

begin

for name1 in cursor LOOP 

begin

 dbms_output.put_line(name1);  


end; 

end LOOP;

end test;
 
我上面这个存储过程在ORACLE 10G中编译提示:“调用‘PUT_LINE'时参数或类型错误” ,请问我那里错误了,因为是初学者,在网上看到这个简单的例子想测试一下。

------解决方案--------------------
putline()不能输入记录类型。

参考:
SQL code
create or replace procedure test asCursor cur is select pk_corp from bd_corp; name1 varchar(20);beginfor r in cur LOOP  begin dbms_output.put_line(r.字段1 || ', ' || r.字段2);   end;  end LOOP;end test;
------解决方案--------------------
name1.pk_corp
------解决方案--------------------
name1.pk_corp
------解决方案--------------------
你的游标 没有开发 取值的过程 输出name1 有什么用?
SQL code
     open cur;     fetch cur into name1     while cur%found      loop        dbms_output.put_line(name1);        fetch cur into name1;      end loop;     close cur;
------解决方案--------------------
1,for循环时 游标是自己打开的
2,for循环时 系统会隐式定义循环变量 即只需使用 不需定义
create or replace procedure test as
Cursor cursor is select pk_corp from bd_corp; --name1 varchar(20);
begin
for name1 in cursor LOOP
--begin
 dbms_output.put_line(name1);
--end;
end LOOP;
end test;

------解决方案--------------------
lz 注意 当用游标for循环式 系统自动读取的是当前行的数据,所以 for name1 in cursor loop 中的name1 的类型是记录类型了
而dbms_output.put_line()不能打印记录类型的
  相关解决方案