Stored procedures 经典的ASP、VBScript连接问题,
下面是一些经典的Asp VB脚本,我正在尝试修改它,以便在windows 2012服务器上运行它。(我知道它是旧的don't ask:()。这在我们的旧2003框上工作,但它使用的库在2012年不受支持。我现在使用存储过程发送此电子邮件。我面临的问题是,当我连接Stored procedures 经典的ASP、VBScript连接问题,,stored-procedures,vbscript,asp-classic,Stored Procedures,Vbscript,Asp Classic,下面是一些经典的Asp VB脚本,我正在尝试修改它,以便在windows 2012服务器上运行它。(我知道它是旧的don't ask:()。这在我们的旧2003框上工作,但它使用的库在2012年不受支持。我现在使用存储过程发送此电子邮件。我面临的问题是,当我连接sMailBody字符串时,我必须有一些”或“语法不允许它连接。当我Response.Write(strRSs)时,我得到字符串,但所有HTML都呈现出来 EXEC[dbo].[MailPackage]'test@test.com', '
sMailBody
字符串时,我必须有一些”或“
语法不允许它连接。当我Response.Write(strRSs)
时,我得到字符串,但所有HTML都呈现出来
EXEC[dbo].[MailPackage]'test@test.com', 'tteesstt@ttessttt.com“,'tset'{visible HTML}
for x = 0 to uBound(aRecipientID)
'-- Plugin real content
sMailBody = Replace(sMailBody,"{*~BACKGROUND~*}","'"Session("LiveURL")&"")
sMailBody = Replace(sMailBody,"{*~HEADER~*}",Session("LiveURL")&"images/testing.jpg")
sMailBody = Replace(sMailBody,"{*~BODY~*}",sBody)
sMailBody = Replace(sMailBody,"{*~URL~*}",Session("LiveURL") & "/viewpackage.asp?p=" & sPackageKey & "&u=" & aRecipientID(x) & "&s=" & nSendID&"'")
Dim strRS
strRS = "EXEC [dbo].[MailPackage] " + "'" + aRecipientEmail(x) + "', '" + Session("FromAddress") + "', '" + sSubject + "', '" + sMailBody + "'"
Response.Write(sMailBody)
Response.Write(strRS)
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("ConnectionString")
Conn.Execute strRS
如何更正语法,以便将
sMailBody
作为消息正文传递到存储过程中。假设要将sMailBody
中的占位符{*~BACKGROUND~*}
替换为会话(“LiveURL”)的内容。
:
改变
sMailBody = Replace(sMailBody,"{*~BACKGROUND~*}","'"Session("LiveURL")&"")
到
基本规则:
&“
”-是浪费时间Next
更新感谢@Lankymart的评论:
…假设您希望将sMailBody
中的占位符{*~BACKGROUND~*}
替换为会话的单引号内容(“LiveURL”)
原始代码中的错误以及我对jackncode意图的可能错误解释表明,通过串联构建字符串会给表达式增加太多噪音,很容易弄乱。请参阅wrt在.Run或.Exec的命令行中输入引用的路径和其他参数的数百万个问题
在这种情况下,编写函数进行“拥抱”是值得的,这样你就可以处理复杂的有趣字母:
>> Function q(s) : q = "'" & s & "'" : End Function
>> Function qq(s) : qq = """" & s & """" : End Function
>> s = "x"
>> t = "<tag attr=@>"
>> WScript.Echo Replace(t, "@", q(s))
>> WScript.Echo Replace(t, "@", qq(s))
>>
<tag attr='x'>
<tag attr="x">
>函数q(s):q=“”&s&“”:结束函数
>>函数qq(s):qq=“”&s&“:结束函数
>>s=“x”
>>t=“”
>>WScript.Echo替换(t,“@”,q(s))
>>WScript.Echo替换(t,“@”,qq)
>>
(cf.)取决于他们是否想要
“'”&Session(“LiveURL”)和“
”,这是我的猜测。@Lankymart-谢谢你指出了“”Session(“LiveURL”)和“
”的更可能的解释;我相应地更新了我的答案。
>> Function q(s) : q = "'" & s & "'" : End Function
>> Function qq(s) : qq = """" & s & """" : End Function
>> s = "x"
>> t = "<tag attr=@>"
>> WScript.Echo Replace(t, "@", q(s))
>> WScript.Echo Replace(t, "@", qq(s))
>>
<tag attr='x'>
<tag attr="x">