oracle的存储过程的调用和写法?
我定义了这样一个包createorreplacepackagetypesastypecursorTypeisrefcursor;endtypes;然后在存储过程中使用cr...
我定义了这样一个包
create or replace package types
as
type cursorType is ref cursor;
end types;
然后在存储过程中使用
create or replace procedure proc_login(glname in varchar2, passwd varchar2,
p_cursor in out types.cursorType) is
uid integer;
begin
select userid into uid from user_info
where loginname=glname and password=passwd;
if uid is not null then
begin
update user_info set lastlogindate=sysdate where userid=uid;
end;
end if;
OPEN p_cursor FOR
select userid,loginname,username,e_mail,
address,telephone,regiondate,lastlogindate
from user_info where userid=uid ;
end proc_login;
然后我在PL/SQL里执行execute PROC_LOGIN('abc','123','')怎么提示说SQL出错,请高手指教,我的过程有什么错和不好的地方吗?还有执行命令正确否?还有第三个参数应该是什么?希望能详细解释,万分感谢!
我是想知道cursor类型的参数怎样调用,也就是这句话怎样写?execute PROC_LOGIN('abc','123','') 展开
create or replace package types
as
type cursorType is ref cursor;
end types;
然后在存储过程中使用
create or replace procedure proc_login(glname in varchar2, passwd varchar2,
p_cursor in out types.cursorType) is
uid integer;
begin
select userid into uid from user_info
where loginname=glname and password=passwd;
if uid is not null then
begin
update user_info set lastlogindate=sysdate where userid=uid;
end;
end if;
OPEN p_cursor FOR
select userid,loginname,username,e_mail,
address,telephone,regiondate,lastlogindate
from user_info where userid=uid ;
end proc_login;
然后我在PL/SQL里执行execute PROC_LOGIN('abc','123','')怎么提示说SQL出错,请高手指教,我的过程有什么错和不好的地方吗?还有执行命令正确否?还有第三个参数应该是什么?希望能详细解释,万分感谢!
我是想知道cursor类型的参数怎样调用,也就是这句话怎样写?execute PROC_LOGIN('abc','123','') 展开
1个回答
展开全部
存储过程的执行方法如下
/*****************************************************************
oracle pl/sql中新建一个"测试"窗口,键入以下值测试oracle存储过程。
dbms.output.put_line(param)为打印消息,类似jsp的out.println(),
用于在过程中查看错误地方,可以在过称中添加。
*****************************************************************/
declare
param varchar2(10);
begin
param :='week';--这是你的输入参数
proc_rpt_result(param);
dbms_output.put_line(param);--这是过程处理打印结果
end;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是我前段时间自己查资料总结的,都是初学者 希望对你有用
cursor是游标类型,前面某个查询的值有多个返回 如
select xx from xxx 有多个返回值xx存入游标cursor,下面的open打开游标,对每一个游标的值按顺序进行操作,你可以把游标看成是一个数组,select存入,open取出,你这个包我看不懂。
/*****************************************************************
oracle pl/sql中新建一个"测试"窗口,键入以下值测试oracle存储过程。
dbms.output.put_line(param)为打印消息,类似jsp的out.println(),
用于在过程中查看错误地方,可以在过称中添加。
*****************************************************************/
declare
param varchar2(10);
begin
param :='week';--这是你的输入参数
proc_rpt_result(param);
dbms_output.put_line(param);--这是过程处理打印结果
end;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是我前段时间自己查资料总结的,都是初学者 希望对你有用
cursor是游标类型,前面某个查询的值有多个返回 如
select xx from xxx 有多个返回值xx存入游标cursor,下面的open打开游标,对每一个游标的值按顺序进行操作,你可以把游标看成是一个数组,select存入,open取出,你这个包我看不懂。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询