我使用“Microsoft SQL Server Native Client 11.0”从传统ASP调用SQL Server存储过程。多年来我一直这样做。我刚刚开发了一个存储过程,它使用PRINT语句在开发过程中提供信息性消息,以及从MSSMS中调用时。但是,当我通过SQL Server Native Client从传统ASP调用相同的存储过程时,出现错误代码中出现的第一个PRINT语句的文本时出现0x80040e14错误。Microsoft SQL Server Native Client受PRINT语句支持
我已经搜索了这个问题,但无法找到任何地方,它说你不能这样做,所以我想知道如果我错过了某个地方的把戏。任何人都可以指出我有证据表明我不能包含PRINT语句(嘘!)或者我做了一些愚蠢的事情吗?
例外:
在 HTTP在71行,第3列未处理的异常://本地主机:3000 /数据访问/ Workpalces.asp
0x80040e14 - Microsoft SQL Server的本机客户端11.0 :---- START Assessment.RefreshUP ----
我的存储(略)步骤:
CREATE PROCEDURE Assessment.RefreshUP
@OrgID int,
@UserID int = NULL,
@BaseDate smalldatetime = NULL
AS
BEGIN
SET NOCOUNT ON
DECLARE @Error int
DECLARE @RowCount int
BEGIN TRY
PRINT '---- START Assessment.RefreshUP ----'
(snip)
我的经典ASP召唤:
' Assessment.RefreshUP
' ========================
' Creates or updates a Workplace
Function Assessment_RefreshUP(rs, OrganisationID, UserID)
Stop
Dim cmd
Set cmd = Server.CreateObject("ADODB.Command")
Set rs = Server.CreateObject("ADODB.Recordset")
cmd.ActiveConnection = DBConnString
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "Assessment.RefreshUP"
cmd.Parameters.Append cmd.CreateParameter("@OrgID", adInteger, adParamInput, 0, OrganisationID)
cmd.Parameters.Append cmd.CreateParameter("@UserID", adInteger, adParamInput, 0, UserID)
' cmd.Parameters.Append cmd.CreateParameter("@BaseDate", adDate, adParamInput, 0, Null)
rs.CursorLocation = adUseClientBatch
rs.Open cmd, , adOpenStatic, adLockReadOnly
Set rs.ActiveConnection = Nothing
Set cmd = Nothing
End Function
你可以发布你的完整存储过程,感觉你的'PRINT'不是问题。它出现在以后的例外情况中,因为错误代码引用了'字符串后的未封闭引号'。正如你的'PRINT'语句输出怀疑这是问题所在。 – Lankymart
我怀疑你是对的,因为我刚刚偶然发现了一个不同的ASP /存储过程调用,它们中有PRINT语句,但不影响它们。我应该编辑我的原始帖子还是在评论中添加完整的存储过程? –
只需编辑您现有的文章扩展您的存储过程代码,您可以在文章的底部留下编辑,说您已更新它,但说实话人们会知道。 ;) – Lankymart