按理说游标c_cur转为记录sp_test时,游标和记录的列和列名要一致,你可以试下把sp_test 声明为sp_test c_cur%ROWTPYE或v_1...该成和表列名一致,而for sp_test in c_cur loop这种LOOP方式写出来的sp_test是系统定义的变量。for i in c_cur loop i表示c_cur当前行的记录,直接
邻水网站建设公司创新互联,邻水网站设计制作,有大型网站制作公司丰富经验。已为邻水上1000家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的邻水做网站的公司定做!
declare
cursor c_cur is
select id,name,addr from test where id=1;
begin
for i in c_cur loop
dbms_output.put_line(i.name||' '||i.addr);
end loop;
end;
sqlplus环境下:
exec 包名.自定义函数名(参数1,参数2,参数N) ;
你自定义的函数,注意要在package body 里定义好,也需要在package中声明。
begin call TEMP_TO_KSN14.RUN1; end; 必须确定当前用户下有TEMP_TO_KSN14.RUN1有执行的权限
呃,一个输入变量,一个输出变量不就结了
create or replace function Fun_Multiplicative(v_input in number) return number is
v_result number(8);
v_total number(8) :=1;
v_count number(5) :=1;
begin
while v_count = v_input loop
v_total := v_total * v_count;
v_count := v_count + 1;
end loop;
v_result := v_total;
return(v_result);
end Fun_Multiplicative;
你的这个想法(在包体的函数/过程里面使用包体定义的游标记录类型作为参数)是不能实现的.
可以把函数F_do_sth_with_C中需要的参数在包头进行定义. 如果这个参数的类型是由包体的函数/过程动态决定的, 那么你要另想一些变通的办法.
[TEST1@orcl#15-4月 -10] SQLset serveroutput on
[TEST1@orcl#15-4月 -10] SQLdeclare
2 v_num number;
3 begin
4 select count(*) into v_num from tab;
5 dbms_output.put_line(v_num);
6 end;
7 /
15
PL/SQL 过程已成功完成。