create or replace procedure SBGL_DELRECORD
(
 v_tablename IN VARCHAR2 DEFAULT NULL,
 
 v_Fieldname IN VARCHAR2 DEFAULT NULL,
 
 v_FieldValue IN VARCHAR2 DEFAULT NULL,
 
 v_ischeck IN VARCHAR2 DEFAULT NULL,
 
 v_msgs out VARCHAR2

AS
  v_sql VARCHAR2(2000);
begin   
  IF v_ischeck=-1 THEN
    v_msgs:='该单据已经审核,不能删除!';  
    RETURN;   
  END IF;
  v_sql := 'update '||v_tablename||' set del=1 where '||v_Fieldname||'='''||v_FieldValue||'''';
  EXECUTE IMMEDIATE v_sql;
  commit; 
  v_msgs:='删除单据成功!';  
  EXCEPTION
    WHEN OTHERS THEN
    ROLLBACK;
     v_msgs := '删除单据出错!';
    RETURN; 
 end SBGL_DELRECORD;
初用oracle写了个返回值的存储过程,怎么调用?求教。

解决方案 »

  1.   

    如果用PL/SQL调用,可以这样DECLARE
      l_tname VARCHAR2(30);
      l_fname VARCHAR2(100);
      l_fvalue VARCHAR2(20);
      l_ischeck VARCHAR2(10);
      l_msgs VARCHAR2(100);
    BEGIN
      l_tname := 'MYTNAME';
      l_fname := 'MYCOL';
      l_fvalue := 'MYFVALUE';
      l_ischeck := '-1';
      SBGL_DELRECORD(l_tname, l_fname, l_fvalue, l_ischeck, l_msgs);
      DBMS_OUTPUT.PUT_LINE(l_msgs);
    END;
    /
      

  2.   

    pl/sql中点procedures找到SBGL_DELRECORD   右键->测试 
      

  3.   

    在sql plus中可以使用execute SBGL_DELRECORD('',...)
    或者如楼上所说的用PL SQL DEVELOPER工具,右键选择该存储过程,点击TEST,然后输入变量名
      

  4.   

    1 匿名块
       最好就在PL/SQL中测试
    2 最方便
    3 根据系统决定