有两张表HZ_cust_Accounts  。  BO_PSM_KHXX。
要创个存储过程,
需要将HZ_cust_Accounts中的ACCOUNT_NAME和CUST_ACCOUNT_ID  复制到
BO_PSM_KHXX中的ZWKHMC和KHBIH这两个上面。
create or replace procedure khxxgc
as
cursor cs  is SELECT ACCOUNT_NAME,CUST_ACCOUNT_ID FROM HZ_cust_Accounts;W_ACCOUNT_NAME varchar2(50),W_CUST_ACCOUNT_ID varchar2(50);
begin 
for c in cs loop  
BEGIN
insert into 
BO_PSM_KHXX(KHBIH,ZWKHMC) values(W_CUST_ACCOUNT_ID,W_ACCOUNT_NAME);
end loop;  
end khxxgc;  call khxxgc();执行call khxxgc();说我程序包或函数错误。khxxgc处于无效状态。

解决方案 »

  1.   

    oracle执行存储过程SQL窗口: 
    call   procedure_name(parameter); 
    begin   procedure_name(parameter);   end; COMMAND窗口: 
    exec   procedure_name(parameter); 
    execute   procedure_name(parameter); 
    call   procedure_name(parameter); 
    begin   procedure_name(parameter);   end;
      

  2.   

    还有可能是你创建了存储过程后没commit。
    btw,楼主结帖率好低啊。
      

  3.   

    你的这段PL/SQL明显多了一个BEGIN导致编译通不过.create or replace procedure khxxgc
    as
    cursor cs  is SELECT ACCOUNT_NAME,CUST_ACCOUNT_ID FROM HZ_cust_Accounts;W_ACCOUNT_NAME varchar2(50),W_CUST_ACCOUNT_ID varchar2(50);
    begin 
    for c in cs loop  
    BEGIN    --这个BEGIN没有 END匹配去掉 或者在插入语句后面加END;
    insert into 
    BO_PSM_KHXX(KHBIH,ZWKHMC) values(W_CUST_ACCOUNT_ID,W_ACCOUNT_NAME);
    end loop;  
    end khxxgc;  
     
    call khxxgc();
      

  4.   

    create or replace procedure khxxgc
    as
    cursor cs  is SELECT ACCOUNT_NAME,CUST_ACCOUNT_ID FROM HZ_cust_Accounts;W_ACCOUNT_NAME varchar2(50),W_CUST_ACCOUNT_ID varchar2(50);
    begin 
    for c in cs loop  
    insert into 
    BO_PSM_KHXX(KHBIH,ZWKHMC) values(c.W_CUST_ACCOUNT_ID,c.W_ACCOUNT_NAME);
    end loop;  
    COMMIT;
    WHEN OTHERS THEN 
      NULL;
    end khxxgc;  
     
    EXEC khxxgc;