【发布时间】:2026-01-15 04:15:01
【问题描述】:
我正在使用 ADO 与我的 Sybase 服务器进行通信..
这就是我执行简单命令的方式:
_ConnectionPtr m_ConnPtr;
//... Instantiate connection
_CommandPtr m_CommPtr;
m_CommPtr->CreateInstance(__uuidof(Command))
m_CommPtr->ActiveConnection = m_ConnPtr;
Variant m_variant;
m_variant.SetString("My Param Value");
_ParameterPtr ParamPtr;
ParamPtr = m_CommPtr->CreateParameter("@StrParam", (DataTypeEnum) m_variant.vt, adParamInput, NULL, m_variant);
m_CommPtr->Parameters->Append(PrmPtr);
m_CommPtr->CommandText = "EXECUTE my_stored_procedure @StrParam";
m_CommPtr->Execute(NULL, NULL, adOptionUnspecified);
@StrParam 应该是 VarChar 类型..
运行它给我一个错误:
Attempt to insert NULL value into column 'StrParam'. table 'MYTABLE';
column does not allow nulls. Update fails.
我不确定为什么会收到此错误,因为我正在指定它的值(“我的参数值”)..
有谁知道我做错了什么?
(我没有包含存储过程,因为我确定过程本身没有任何问题。使用相同过程的其他应用程序工作正常。所以我使用的方式一定有问题参数化命令)
【问题讨论】: