SELECT COUNT(*) INTO RID FROM CERTIFICATE WHERE CERTIFICATE_NAME=NAME;
  IF RID=0 THEN
    INSERT CERTIFICATE (CERTIFICATE_NAME, CERTIFICATE_ENNAME,CERTIFICATE_URL) VALUES (NAME,CNNAME,URL);
  END IF;EXCEPTION 
    WHEN OTHERS THEN
        RID := -RID;

解决方案 »

  1.   

    btw: 推荐使用 PL/SQL developer 来编辑 pl/sql ~ 很方便.在 www.cnoug.org 有的下~
      

  2.   

    我想让正确插入时返回0,否则返回一负数,在企业管理器中查看此过程,一直是无效状态,究竟错误出在那里?另我写一简单的存储过程如  
    CREATE OR REPLACE  PROCEDURE PR_HONG
    as
    begin
     select * from HONG;
    end;
    系统也是置为无效状态,究竟是何错误。
      

  3.   

    pl/sql的过程不能直接写select .. from ....
    要写成select ...into....from.....
      

  4.   

    SELECT COUNT(*) INTO RID FROM CERTIFICATE WHERE CERTIFICATE_NAME=NAME;
      IF RID=0 THEN
        INSERT CERTIFICATE (CERTIFICATE_NAME, CERTIFICATE_ENNAME,CERTIFICATE_URL) VALUES (NAME,CNNAME,URL);
      else 
    RID := -RID;  END IF;EXCEPTION 
        WHEN OTHERS THEN
            RID := -RID;
      

  5.   

    SELECT COUNT(*) INTO RID FROM CERTIFICATE WHERE CERTIFICATE_NAME=NAME;
      IF RID=0 THEN
        INSERT CERTIFICATE (CERTIFICATE_NAME, CERTIFICATE_ENNAME,CERTIFICATE_URL) VALUES (NAME,CNNAME,URL);
      else 
    RID := -RID;
    END IF;EXCEPTION 
        WHEN OTHERS THEN
        null;
    ..
    ..
    刚才没写完就发出去了
    你的那个简单的可以写成:CREATE OR REPLACE  PROCEDURE PR_HONG
    as
    begin
     null;
    end;
    编译一下看看还是不是无效状态
      

  6.   

    我自己又试了一下,将
    INSERT INTO CERTIFICATE (CERTIFICATE_NAME, CERTIFICATE_ENNAME,CERTIFICATE_URL) VALUES (NAME,CNNAME,URL);换作RID:=0;则系统变为有效.
    是此语句有错误吗,好象也没有错啊?