我正在尝试从 VC++ 调用存储过程。
这是存储过程的样子:
public static void SqlStoredProcedure2(string name, out byte[] backup)
{
using (SqlConnection conn = new SqlConnection("context connection=true"))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "SELECT EmployeePhoto FROM [dbo].[DimEmployee] where FirstName like '%@name%'";
SqlDataReader reader = null;
reader = cmd.ExecuteReader();
backup = null;
while (reader.Read())
{
backup = (byte[])reader["EmployeePhoto"];
}
conn.Close();
}
}
C++ 代码如下所示:
RETCODE retcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
retcode = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 5, 0, "Alan", 0, &cbParm1);
unsigned char ptr[8000] = "";
cbParm2 = 8000;
retcode = SQLBindParameter(hstmt, 2, SQL_PARAM_OUTPUT, SQL_C_BINARY, SQL_VARBINARY, 0, 0, ptr, 0, &cbParm2);
retcode = SQLExecDirectA(hstmt, (UCHAR*)"{call SqlStoredProcedure2(?, ?)}", SQL_NTS);
当我检查返回的代码时没有错误但没有任何内容ptr
?这里有什么问题?