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


       SELECT @USERNAME=USERNAME
           FROM DBO.[USERINFO]
           WHERE USERID=@USERID
       RETURN
    END
    GO

    调用该存储进程的ASP代码如下:

   '**调用带有输入输出参数的存储进程**
    DIM MYCOMM,USERID,USERNAME
    USERID = 1
    SET MYCOMM = SERVER.CREATEOBJECT("ADODB.COMMAND")
    MYCOMM.ACTIVECONNECTION = MYCONSTR          'MYCONSTR是数据库连接字串
    MYCOMM.COMMANDTEXT      = "GETUSERNAME"     '指定存储进程名
    MYCOMM.COMMANDTYPE      = 4                 '表明这是一个存储进程
    MYCOMM.PREPARED         = TRUE             '要求将SQL命令先行编译
    '声明参数
    MYCOMM.PARAMETERS.APPEND MYCOMM.CREATEPARAMETER("@USERID",3,1,4,USERID)
    MYCOMM.PARAMETERS.APPEND MYCOMM.CREATEPARAMETER("@USERNAME",200,2,40)
    MYCOMM.EXECUTE
    '取得出参
    USERNAME = MYCOMM(1)
    SET MYCOMM = NOTHING

    在以上代码中,可以看到,与声明返回值不同,声明输入参数时需要5个参数,声明输出参数时需要4个参数。声明输入参数时5个参数分别为:参数名、参数数据类型、参数类型、数据长度、参数值。声明输出参数时,没有最后一个参数:参数值。
    需要特别注意的是:在声明参数时,顺序一定要与存储进程中定义的顺序相同,而且各参数的数据类型、长度也要与存储进程中定义的相同。
    如果存储进程有多个参数,ASP代码会显得繁琐,可以使用WITH命令简化代码:

    '**调用带有输入输出参数的存储进程(简化代码)**
    DIM MYCOMM,USERID,USERNAME
    USERID = 1
    SET MYCOMM = SERVER.CREATEOBJECT("ADODB.COMMAND")
    WITH MYCOMM
       .ACTIVECONNECTION = MYCONSTR         'MYCONSTR是数据库连接字串
       .COMMANDTEXT      = "GETUSERNAME"     '指定存储进程名

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

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