我有以下代码,我尝试将字节数组作为参数传递给存储过程。
DbCommand ac = new DbCommand(connIn);
ac.ParamAdd("p_id", jobId);
byte[] zippedAuditLog = ZipFile(auditLog);
ac.ParamAdd("p_audit_log", zippedAuditLog);
ac.ParamAdd("p_mod_user", userId);
ac.ExecuteStoredProc("pkg.audit_log_update");
如果我调试C#代码,则会正确填充zippedAuditLog
字节数组,但是在保存到数据库时,该值设置为0x1F
,这只是一个空格。
数据库过程如下:
CREATE PROCEDURE job_pkg.audit_log_update
@p_id INT,
@p_audit_log VARBINARY(MAX),
@p_mod_user VARCHAR(60),
@p_status VARCHAR(60) OUTPUT
AS
BEGIN
UPDATE t_job
SET zipped_audit_log = @p_audit_log
WHERE id = @p_id
END
非常感谢任何帮助。
修改
ParamAdd代码如下所示:
public SqlParameter ParamAdd(string name, object val) {
if (val == null)
return command.Parameters.AddWithValue(name, DBNull.Value);
else
return command.Parameters.AddWithValue(name, val);
}