2016-06-23 11 views
0

내가 stored procedure에서 varchar(max) 출력 param을받을려고하지만 난 SP을 실행할 때 즉, 위의 Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter를 오류 받고 있어요 vb.net데이터 유형 인 0x23 사용되지 않는 대형 오브젝트, 또는 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 

답변

0

확인 : 여기

내 코드입니다.

첫째, 나는 그런 adUseClient를

db.ConnectionString = "Provider=SQLNCLI11;UID=user;Pwd=password;Database=POSData;Server=localhost;DataCompatibility=80;MARS Connection=True" 
db.CursorLocation = ADODB.CursorLocationEnum.adUseClient 
db.Open() 

에의 CursorLocation을 설정, 출력 매개 변수의 데이터 형, 나는

prm = cmd.CreateParameter("@PromoRejectDesc", ADODB.DataTypeEnum.adBSTR, ADODB.ParameterDirectionEnum.adParamOutput, 999999) 
    cmd.Parameters.Append(prm) 

모든 그 후 잘 작동을 adBSTR

을 사용했다!

그건 그렇고, 나는 18,255 (길이) 문자를 받고 있습니다.