此存储过程中返回的每个字段都有一个值,但是当我写出值时,其中一些值为空。有什么想法吗?
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={SQL Server};server=localhost;database=db","test","test"
Set emailCMD = Server.CreateObject("ADODB.Command")
emailCMD.ActiveConnection = objconn
emailCMD.CommandType = adCmdStoredProc
emailCMD.CommandText = "get_email"
emailCMD.Parameters.Append(emailCMD.CreateParameter("userid",adInteger,adParamInput,,userid))
emailCMD.Parameters.Append(emailCMD.CreateParameter("emailaddress",adVarChar,adParamInput,100,emailaddress))
emailCMD.Parameters.Append(emailCMD.CreateParameter("emailjobid",adInteger,adParamInput,,emailjobid))
emailCMD.Parameters.Append(emailCMD.CreateParameter("businessid",adInteger,adParamInput,,businessid))
Set emailrs = emailCMD.Execute
emailbody = emailRS("emailjobdesc")
sendto = emailrs("emailaddress")
emailsubject = emailrs("emailjobsubject")
emailid = emailrs("emailid")
emailpassword = emailrs("emailpassword")
businessname = emailrs("businessname")
response.write emailbody & "<br>" & sendto & "<br>"&emailsubject&"<br>"&emailid&"<br>"&emailpassword&"<br>"&businessname
response.End
答案 0 :(得分:1)
以下是我修复它的方法
替换:
Set emailrs = emailCMD.Execute
使用
Set emailRS = server.createobject("ADODB.Recordset")
emailrs.cursorlocation = adUseClient
emailrs.open emailCMD
答案 1 :(得分:1)
面对同样的问题。
mysql odbc 5.1驱动程序。
通过更改连接对象中的cursorlocation属性来解决。
set Connection = CreateObject("ADODB.Connection")
Connection.cursorlocation = 3 ''adUseClient
Connection.Open ConnStr
答案 2 :(得分:0)
您希望从数据库中提取的字段需要一些输出或ReturnValue参数。
答案 3 :(得分:0)
如果您的存储过程get_email返回6列 - 这些列中的任何一列是Text / NText吗? (并且您已连接到SQL Server 2000数据库?)
更改连接字符串 - 不要使用ODBC。
如果更改返回列的顺序以使文本列为最后一个,则可能会解决您的问题。我过去经常遇到这个问题,列出选择列表末尾的文本列总能解决问题。
几年前我问过这个问题 SQL Server text column affects results returned to classic ASP已将我的连接字符串更改为Microsoft OLE DB提供程序,因此没有任何问题。答案 4 :(得分:0)
我已经测试了表字段是否包含数据类型为varchar(max)或nvarchar(max)的问题。
解决方法是放置
Connection.cursorlocation = 3'adUseClient
如上另一个答案所述,或将nvarchar(max)的大小减小为nvarchar(999)