1

動的 SQL から戻り値を取得するストアド プロシージャを作成しました。次の例外が発生します。

String[1]: Size プロパティのサイズが無効な 0 です。

私の手続き:

CREATE proc [dbo].[Review_Get_PrePopValue](@sqlQuery nvarchar(500), @display nvarchar(200) OUTPUT)
as

EXEC sp_executesql @sqlQuery,   
    @display OUTPUT 

私のコード:

public string GetAnswerValue(string contentSQL, string parameter, string parameterValue)
{
    string sqlstatement = contentSQL.Replace(parameter, parameterValue);

    using (var conn = new SqlConnection(_connectionString))
    {
        string prePopValue;
        SqlCommand comm = new SqlCommand();
        comm.Connection = conn;
        comm.CommandType = CommandType.StoredProcedure;
        comm.CommandText = "Review_Get_PrePopValue";

        comm.Parameters.Add(new SqlParameter("@sqlQuery", SqlDbType.NVarChar)).Value = sqlstatement; 
        comm.Parameters.Add(new SqlParameter
        {
            Direction = ParameterDirection.Output,
            ParameterName = "@display",
            SqlDbType = SqlDbType.NVarChar
        });

        conn.Open();
        comm.ExecuteNonQuery();

        prePopValue = comm.Parameters["@display"].Value.ToString();
        return prePopValue;
    }
}

私のSQL文字列:

Select @display = Grant_Number From GMIS_Grants where grant_id=1
4

2 に答える 2

1

方向 = ParameterDirection.Output、ParameterName = "@display"、サイズ = 200、SqlDbType = SqlDbType.NVarChar

nvarchar のサイズを設定する必要がありました

于 2013-03-14T03:41:15.143 に答える
0

MSDN から

双方向パラメータと出力パラメータ、および戻り値については、Size の値を設定する必要があります。

また、これを SP の最後に追加します。

SELECT @display;
于 2013-03-03T02:32:32.487 に答える