0

SQl プロシージャから戻って値を取得したいのですが、「パラメーター数がパラメーター値数と一致しません」というエラーが発生します。私のコードは次のとおりです。

public int getControlTypeIDByVal()
    {
        int retVal = 0;
        try
        {
            SqlParameter[] _param = new SqlParameter[2];
            _param[0] = new SqlParameter("@ControlName2", ControlName);
            _param[1] = new SqlParameter("@RetVal", SqlDbType.Int);
            _param[1].Direction = ParameterDirection.ReturnValue;

            SqlDataAccess.ExecuteNonQuery(SqlDataAccess.ConnectionString, "PR_getControlTypeIDByVal", _param);
            if (!clsCommonFn.isNullOrEmpty(_param[1].ToString()))
            {
                retVal = Convert.ToInt32(_param[1]);
            }
        }
        catch (Exception e)
        {
            errorMsg = e.Message;
        }
        return retVal;
    }

そしてSpは:-

CREATE PROCEDURE PR_getControlTypeIDByVal
@ControlName2   NVARCHAR(200)
AS
-- EXEC PR_getControlTypeIDByVal 'Jaisalmer 2N/3D'
BEGIN
DECLARE @retVal INT
SET @retVal=0
    SELECT @retVal=ControlTypeID FROM ControlTypes
    WHERE LTRIM(RTRIM(ControlName))=LTRIM(RTRIM(@ControlName2))
PRINT(@retVal)  
RETURN @retVal
END

私を助けてください。

ありがとう

4

2 に答える 2

0

"@RetVal" の" ParameterDirection.ReturnValue "としてパラメーター方向を使用します。そのため、ストアド プロシージャでこのパラメーターを指定する必要はありません。

そして、その値の使用の検索で

_param[1].value.toString();

そして、それを整数に変換します。

于 2013-05-01T11:14:51.083 に答える