錯誤提示:Parameter 'l_ReStatus': No size set for variable length data type: String
背景: cmd.Parameters.Add("l_ReStatus", OracleType.VarChar).Direction = ParameterDirection.Output;
執行完cmd.ExecuteNonQuery();後直接進入catch語句
public bool RunProcZX(string User_Id,out string ReStatus)
{
OracleConnection conn = new OracleConnection(connStr);
conn.Open();
OracleCommand cmd = new OracleCommand("存儲過程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
//定義傳入參數的類型。類型為OracleType.VarChar
cmd.Parameters.Add("l_User_Id", OracleType.VarChar).Direction = ParameterDirection.Input;
//傳值
cmd.Parameters["l_User_Id"].Value = User_Id;
//傳出參數,類似於c#中的out
cmd.Parameters.Add("l_ReStatus", OracleType.VarChar).Direction = ParameterDirection.Output;
try
{
cmd.ExecuteNonQuery();
ReStatus = cmd.Parameters["l_ReStatus"].Value.ToString();
return true;
}
catch
{
return false;
}
finally
{
conn.Close();
}
}
解決辦法:cmd.Parameters.Add("l_ReStatus", OracleType.VarChar,
20).Direction = ParameterDirection.Output;
小注:
Parameter的參數設置長度(size屬性)
實例化Parameter時,如果是字符型,一定要指定size屬性(請使用截圖顯示的方法)