如何在ASP Classic JScript中获得受影响的行?

时间:2018-07-11 08:03:40

标签: asp-classic adodb jscript

我在ASP Classic中具有以下脚本:

<%@ LANGUAGE=Javascript%>
<%
    var dataConn = Server.CreateObject('ADODB.Connection');
    dataConn.Open(connectionString);
    var rowsAffected;
    dataConn.Execute(command, rowsAffected);
    Response.Write(rowsAffected);
    dataConn.Close();
%>

在执行脚本时,行受影响是未定义的。如何获取受影响的行?

1 个答案:

答案 0 :(得分:0)

在网上搜索后,我发现一个答案,即JScript不支持ByRef变量来获取受影响的行。它仅在VBScript中有效。

因此,我使用以下脚本从存储过程中获取受影响的行:

<!--METADATA TYPE="TypeLib" NAME="Microsoft ActiveX Data Objects 2.6 Library" UUID="{00000206-0000-0010-8000-00AA006D2EA4}" VERSION="2.6" -->
<%@ LANGUAGE=JScript%>
<%
    var cn = Server.CreateObject('ADODB.Connection');
    var cs = '...';
    cn.Open(cs); cn.CursorLocation = adUseClient;

    var cmd = Server.CreateObject("ADODB.Command");
    cmd.ActiveConnection = cn;
    cmd.CommandText = '...';
    cmd.CommandType = adCmdStoredProc;

    cmd.Parameters.Append(cmd.CreateParameter('@ID', adInteger, adParamInput, 4, id));
    cmd.Parameters.Append(cmd.CreateParameter('@RowCount', adInteger, adParamOutput, 4));

    cmd.Execute(adExecuteNoRecords);
    Response.Write(cmd.Parameters('@RowCount').Value);

    cn.Close();
%>

您需要这样的存储过程:

CREATE PROC dbo.<StoredProcedure> @ID int, @RowCount int = 0 output AS BEGIN

    [...]

    SET @RowCount = @@rowcount;

END