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
か?ここで何が問題になっていますか?