请教,质疑 sql = sql + "..."的写法
以前在写长sql或需要动态判断sql的where条件时,都写成了sql = sql + "where ..."的形式,但是,今天遇到了一个问题:
先看下面这段:
<%
Option Explicit
dim usrname '//出问题的变量
'//其它变量的定义,略
On Error Resume Next
Connect
'//开始更新事务
conn.BeginTrans
'//向MemberPurchaseInfo表插入新购买记录
sql = "insert into MemberPurchaseInfo(MemberID,PurchasedDate,PurchasedAmount,PurchasedPoints,TransactionNote,TransactionID) "
sql = sql + "values("&M_ID&",'"&P_Date&"',"&P_Amount&","&P_Points&",'"&T_Note_Str&"','"&T_NO&"') "
conn.execute(sql)
'//更新MemberProfile的用户点数
sql = "update MemberProfile set Points = Points + "&P_Points&" "
sql = sql + "where username="&username&"" '//出问题的地方
conn.execute(sql)
if conn.errors.count > 0 then
conn.errors.clear
conn.RollBackTrans
response.redirect "error.asp?err=22"
end if
conn.CommitTrans '//提交事务
1.以上是用事务同时对两张表的更新,我在出问题的地方拼写错误,把usrname错写成了username(多写了一个e),本来应该是空语句,不执行,但是我看到库里所有的用户点数居然全加了P_Points?!!
2.但我若把出问题的sql语句合并成一条
sql = "update MemberProfile set Points = Points + "&P_Points&" where username="&username&""
则执行的是空语句,不出现问题。
这个到底是怎么回事呢?
另:我的环境是ASP+Sql Server2000,在EditPlus下code