0
我试图从stored procedure
接收varchar(max)
输出param
但我发现了上述错误,即,当Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter
我执行SP
在vb.net
数据类型0×23是一个弃用大对象或LOB,但被标记为输出参数
我一直在使用SQLNCLI11
连接字符串,没有运气 我试图提前设置Datatypecompatibility=80
,没有运气
感谢尝试。
这里是我的代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim cmd As ADODB.Command
Dim Rs As ADODB.Recordset
Dim prm As ADODB.Parameter
Dim db As New ADODB.Connection
Dim PromoRejectDesc As String = ""
db.ConnectionString = "Provider=SQLNCLI11;UID=user;Pwd=password;Database=POSData;Server=localhost;DataCompatibility=80;MARS Connection=True"
db.Open()
cmd = New ADODB.Command
cmd.ActiveConnection = db
cmd.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc
cmd.CommandText = "DBO.proc_PromoRejectingFactors"
prm = cmd.CreateParameter("@CustID", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput)
prm.Value = 1050009326
cmd.Parameters.Append(prm)
prm = cmd.CreateParameter("@BranchID", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput)
prm.Value = 101
cmd.Parameters.Append(prm)
prm = cmd.CreateParameter("@FulfillmentChannel", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput)
prm.Value = 1
cmd.Parameters.Append(prm)
prm = cmd.CreateParameter("@Tender", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput)
prm.Value = 0
cmd.Parameters.Append(prm)
prm = cmd.CreateParameter("@CreditCard", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput)
prm.Value = -1
cmd.Parameters.Append(prm)
prm = cmd.CreateParameter("@ExcludePromo", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 1000)
prm.Value = ""
cmd.Parameters.Append(prm)
prm = cmd.CreateParameter("@PromoRejectDesc", ADODB.DataTypeEnum.adLongVarChar, ADODB.ParameterDirectionEnum.adParamOutput, 9999)
cmd.Parameters.Append(prm)
Rs = cmd.Execute
If Rs.State = 1 Then
PromoRejectDesc = prm.Value
MsgBox(PromoRejectDesc)
End If
End Sub