存储过程为
CREATE OR REPLACE  PROCEDURE  DELETE_BAD_WORD  AS 
CURSOR C_BAD_WORD IS SELECT * FROM BAD_WORD; 
BEGIN 
 FOR V_BAD_WORD IN C_BAD_WORD LOOP 
 DELETE  FROM  LEAVE_WORD  
 WHERE  TITLE  LIKE  '%'||V_BAD_WORD.KEY_WORD||'%' OR CONTENT LIKE '%'||V_BAD_WORD.KEY_WORD||'%';  
 END LOOP;
 COMMIT;
EXCEPTION WHEN OTHERS THEN
 ROLLBACK;  
END  DELETE_BAD_WORD;
/

解决方案 »

  1.   

    CREATE  OR  REPLACE    PROCEDURE    DELETE_BAD_WORD    AS    
               CURSOR  C_BAD_WORD  IS  SELECT  *  FROM  BAD_WORD;    
    BEGIN    
     FOR  V_BAD_WORD  IN  C_BAD_WORD  LOOP    
     DELETE FROM LEAVE_WORD WHERE TITLE LIKE '%'||V_BAD_WORD.KEY_WORD  ||'%'
    or content LIKE '%'||V_BAD_WORD.KEY_WORD||'%';      
     END  LOOP;  
     COMMIT;  
    EXCEPTION WHEN OTHERS THEN  
     ROLLBACK;      
    END DELETE_BAD_WORD;  
    /  
     
      

  2.   

    你直接写delete不就行了,没有必要使用游标
      

  3.   

    真抱歉,我没有执行
    SQL> exec DELETE_BAD_WORD;PL/SQL 过程已成功完成。现在好了,数据删除了,谢谢各位!
      

  4.   

    新问题
    我创建了如下存储过程,但是不知道如何调用?CREATE OR REPLACE  PROCEDURE "YCYB"."INS_TABLE" ( p_a char, p_b char) 
    as
    v_a char(10);
    v_b char(10);
    begin
      insert into test_prc values(v_a,v_b);
    end;SQL> desc test_prc
     名称                                      空?      类型
     ----------------------------------------- -------- -----------
     A                                         NOT NULL CHAR(10)
     B                                         NOT NULL CHAR(10)sql>exec INS_TABLE 后面如何把参数传入?
      

  5.   

    新问题
    我创建了如下存储过程,但是不知道如何调用?CREATE OR REPLACE  PROCEDURE "YCYB"."INS_TABLE" ( p_a char, p_b char) 
    as
    v_a char(10);
    v_b char(10);
    begin
      insert into test_prc values(v_a,v_b);
    end;SQL> desc test_prc
     名称                                      空?      类型
     ----------------------------------------- -------- -----------
     A                                         NOT NULL CHAR(10)
     B                                         NOT NULL CHAR(10)sql>exec INS_TABLE 后面如何把参数传入?
      

  6.   

    错误如下:SQL> exec ins_table('a','b');
    BEGIN ins_table('a','b'); END;*
    ERROR 位于第 1 行:
    ORA-01400: 无法将 NULL 插入 ("WZW_TEST"."TEST_PRC"."A")
    ORA-06512: 在"WZW_TEST.INS_TABLE", line 7
    ORA-06512: 在line 1
      

  7.   

    修改存储过程里面的这条语句:
    insert  into  test_prc  values(p_a,p_b);  
      

  8.   

    那我定义的参数
    v_a VARCHAR2(10);
    v_b VARCHAR2(10); 
    没有任何意义了,直接把参数传入了啊!
      

  9.   

    这个参数v_a VARCHAR2(10);v_b VARCHAR2(10); 如果是作为insert 就没作用,但是如果作为select 语句就有用,我刚才把这个语句改写成如下,不能执行,不知道为什么?
    CREATE OR REPLACE  PROCEDURE "WZW_TEST"."INS_TABLE" ( p_a 
        VARCHAR2, p_b VARCHAR2)
    as
        
    begin
      select  a,b  into  p_a,p_b  from  test_prc  where  rownum  <=1;
      dbms_output.put_line('p_a:'||p_a||' p_b:'||p_b);
    end INS_TABLE;
      

  10.   

    into的话就不能用上面的传入变量了
    创建两个变量