如题,小弟有个SQL的存储过程,想转换成Oracle的存储过程使用,但是对Oracle数据库不熟悉,请高手指点,谢谢。CREATE PROCEDURE sp_insert_calls   
(   
@CustomerID varchar(50)=NULL,   
@ToAgentGroup nvarchar(32)=NULL,   
@Direction smallint=1,   
@Status smallint=1,   
@RemoteNumber varchar(32)=NULL,   
@LocalNumber varchar(32)=NULL,   
@EIC_CallIDKey varchar(32)=NULL,   
@IsInterCom smallint=1,   
@CallID int output   
)AS   
insert into Calls (CallType,CustID,ToAgentGroup,Direction,Status,IsIntercom, RemoteId, LocalId, CallSeq)   
values(1,rtrim(@CustomerID),rtrim(@ToAgentGroup) ,@Direction ,@Status,@IsInterCom,rtrim(@RemoteNumber),rtrim(@LocalNumber), rtrim(@EIC_CallIDKey))   
SELECT @CallID=@@IDENTITY  

解决方案 »

  1.   

    你Calls表中,是不是有一个字段是自增长的?
      

  2.   


    列名           数据类型    长度   允许空
    CallID       int        4                             ←CallID字段索引,自增
    CallType     smallint   2     √ 
    CallSeq      varchar    50    √
    .
    .
    .
      

  3.   


    create sequence seq_identity
        minvalue 0
        maxvalue 999999999999
        start with 1
        increment by 1;create or replace procedure  
    (
        in_customerid           varchar2  default null,
        in_toagentgroup         varchar2  default null,
        in_direction            number    default 1,
        in_remotenumber         varchar2  default null,
        in_localnumber          varchar2  default null,
        in_eic_callidkey        varchar2  default null,
        in_isintercom           number    default 1,
        out_callid       out    number
    )
    as
    begin
        insert into calls (callid,calltype,custid,toagentgroup,direction,status,isintercom, remoteid, localid, callseq) 
        values(seq_identity.nextval, 1,rtrim(in_customerid),rtrim(in_toagentgroup) ,in_direction ,in_status,in_isintercom,rtrim(in_remotenumber),rtrim(in_localnumber), rtrim(in_eic_callidkey))   
        commit;
        out_callid := seq_identity.currval;
    end sp_insert_calls;