我在ASP Classic中具有以下脚本:
<%@ LANGUAGE=Javascript%>
<%
var dataConn = Server.CreateObject('ADODB.Connection');
dataConn.Open(connectionString);
var rowsAffected;
dataConn.Execute(command, rowsAffected);
Response.Write(rowsAffected);
dataConn.Close();
%>
在执行脚本时,行受影响是未定义的。如何获取受影响的行?
答案 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