SQL Server&使用VB6的ADO数据类型 - 从存储过程为VARCHAR(MAX)OUTPUT参数设置的大小是多少?

时间:2018-06-14 21:44:03

标签: sql parameters vb6 output adodb

从VB6调用存储过程。

lcmdADOCommand.Parameters.Append lcmdADOCommand.CreateParameter("@p_user_id", adVarChar, adParamInput, 8, lobjFPSysUtilsSBO.ExtractUserFromToken(strSessionTokenVal))
          lcmdADOCommand.Parameters.Append lcmdADOCommand.CreateParameter("@p_source_data_XML", adVarChar, adParamInput, -1, strXML_Warranty_RSRef)
          lcmdADOCommand.Parameters.Append lcmdADOCommand.CreateParameter("@p_unlock_object_flag", adBoolean, adParamInput, , blnUnlockObjectVal)
          lcmdADOCommand.Parameters.Append lcmdADOCommand.CreateParameter("@p_return_data_flag", adBoolean, adParamInput, , True)

      Set lobjADOParam = lcmdADOCommand.CreateParameter("@p_output_record_XML", adVarChar, adParamOutput, -1, strXML_RecordList_RSRef)
      lobjADOParam.Size = 8000
      lcmdADOCommand.Parameters.Append lobjADOParam

使用最后一个输出参数...如果我没有将大小设置为8000,则会出现运行时错误

  

"参数对象定义不正确。不一致或不完整   信息已提供"。

我可以在VB6中使用VARCHAR(MAX)输出的最大大小是多少? 在输入上将大小设置为-1很好,但不在输出参数

1 个答案:

答案 0 :(得分:1)

使用-1表示adLongVarCharadLongVarWChar参数的大小,而不是{1}},因为在您的代码段中(在枚举条目名称中缺少adVarChar)。

顺便说一句,如果您的Q表示LongadParamInput中的方向无关紧要,即建议问题/方向设法只会减慢此处的答案。