ASP程序与SQL存储过程结合使用详解(3)


    SET MYCOMM = NOTHING  

    当然也可通过CONNECTION对象或RECORDSET对象调用此类存储进程,不过建立RECORDSET对象是为了取得记录集,在没有返回记录集的情况下,还是利用COMMAND对象吧。


    3. 有返回值的存储进程
    在进行类似SP2的操作时,应充分利用SQL SERVER强大的事务处理功能,以维护数据的一致性。并且,我们可能需要存储进程返回执行情况,为此,将SP2修改如下:

    /*SP3*/
    CREATE PROCEDURE DBO.DELUSERALL
    AS
    SET NOCOUNT ON
    BEGIN
       BEGIN TRANSACTION
       DELETE FROM DBO.[USERINFO]
       IF @@ERROR=0
          BEGIN
             COMMIT TRANSACTION
             RETURN 1
          END
       ELSE
          BEGIN
             ROLLBACK TRANSACTION
             RETURN 0
          END        
       RETURN
    END
    GO

    以上存储进程,在DELETE顺利执行时,返回1,否则返回0,并进行回滚操作。为了在ASP中取得返回值,需要利用PARAMETERS集合来声明参数:

    '**调用带有返回值的存储进程并取得返回值**
    DIM MYCOMM,MYPARA
    SET MYCOMM = SERVER.CREATEOBJECT("ADODB.COMMAND")
    MYCOMM.ACTIVECONNECTION = MYCONSTR         'MYCONSTR是数据库连接字串
    MYCOMM.COMMANDTEXT      = "DELUSERALL"      '指定存储进程名
    MYCOMM.COMMANDTYPE      = 4                 '表明这是一个存储进程
    MYCOMM.PREPARED         = TRUE              '要求将SQL命令先行编译
   '声明返回值
    SET MYPARA = MYCOMM.CREATEPARAMETER("RETURN",2,4)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2213.html