从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很好,但不在输出参数
上答案 0 :(得分:1)
使用-1
表示adLongVarChar
或adLongVarWChar
参数的大小,而不是{1}},因为在您的代码段中(在枚举条目名称中缺少adVarChar
)。
顺便说一句,如果您的Q表示Long
或adParamInput
中的方向无关紧要,即建议问题/方向设法只会减慢此处的答案。