说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

考,为什么?存储过程就这么麻烦吗?

编辑:说三道四文库 发布时间:2018-06-19 03:04
HTML文档下载 WORD文档下载 PDF文档下载
declare sp procedure for sp_opererrors('J0010312005');
execute sp;
if sqlca.sqlcode<0 then
   messagebox('error',sqlca.sqlerrtext)
   return -1
end if;
在pb里用老提示“无效的描述对象“为啥呢

sp_opererrors的定义是什么?
把参数先赋值一个变量试验一下

pb帮助里面的oracle存储过程使用范例:


If a stored procedure, proc1, is defined as:

CREATE PROCEDURE spm1

(dept varchar2, mgr_name OUT varchar2) 
IS lutype varchar2(10);
BEGIN 
SELECT manager INTO mgr_name FROM mgr_table
WHERE dept_name = dept;
END;

To declare that procedure for processing within PowerBuilder, you code:

DECLARE dept_proc PROCEDURE FOR 
spm1(:dept);

Note that this declaration is a non-executable statement, just like a cursor declaration. Where cursors have an OPEN statement, procedures have an EXECUTE statement.

When the EXECUTE statement executes, the procedure is invoked. The EXECUTE refers to the logical procedure name.

EXECUTE dept_proc;

/这就是sp_opererrors的存储过程代码,删除fxhbh=传入的参数的记录

CREATE OR REPLACE PROCEDURE sp_del_fxh
   (
     bh varchar2(30)
   )
AS
BEGIN
   delete from fxhxx where fxhbh=:bh;
END;
你这个过程能编译通过吗?

where fxhbh=:bh;

改为

where fxhbh=bh;
CREATE OR REPLACE PROCEDURE sp_del_fxh
   (
     bh  in varchar2 --1
   )
AS
BEGIN
   delete from fxhxx where fxhbh=bh;--2
END;
declare sp procedure for sp_opererrors('J0010312005');
execute sp;
if sqlca.sqlcode<0 then
   messagebox('error',sqlca.sqlerrtext)
   return -1
end if;



/这就是sp_opererrors的存储过程代码,删除fxhbh=传入的参数的记录

CREATE OR REPLACE PROCEDURE sp_del_fxh
   (
     bh  in varchar2
   )
AS
BEGIN
   delete from fxhxx where fxhbh=bh;
END;

又说:对象“piblic.sp_opererrors"不存在!
我操!
首先确定存储过程在后端编译通过;然后在里面在加个意外处理。
如果是返回记录集的话最好用包来处理。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘