我有一個存儲過程有兩個輸出參數在MySQL的測試1「和test2' 的正在運行的服務器5.6爲什麼ODBC C#在MySQL中的存儲過程中使用OUT參數時返回空字符串?
CREATE PROCEDURE `test_procedure`(OUT test1 varchar(20),OUT test2 int)
BEGIN
SET test1 = 'testing variable 1';
SET test2 = 3;
END
我有我的計算機上安裝ODBC驅動程序5.3。我使用下面的代碼綁定的參數,並獲得產值:
OdbcCommand cmdTest = new OdbcCommand();
cmdTest.Connection = this.conn;
cmdTest.CommandText = "{call test.test_procedure (?, ?)}";
cmdTest.Parameters.Add(@"test1", OdbcType.VarChar, 20).Direction = ParameterDirection.Output;
cmdTest.Parameters.Add(@"test2", OdbcType.Int).Direction = ParameterDirection.Output;
cmdTest.CommandType = CommandType.StoredProcedure;
using (OdbcDataReader returnRead = cmdTest.ExecuteReader())
{
while (returnRead.Read())
{
//Do something
}
}
string test1 = cmdTest.Parameters[0].Value.ToString();
string test2 = cmdTest.Parameters[1].Value.ToString();
然而,在C#代碼串test1
和test2
值作爲空字符串返回。我怎樣才能獲得我在存儲過程中設置的值?
我也試過ExecuteNonQuery()
,但它給出了相同的結果。我知道我已連接到數據庫,因爲我能夠使用SELECT
和INSERT
和ExecuteReader()
。
你需要使用RETURN或SELECT test1,test2 –
@Shannon我以爲MySQL不允許RETURN。如果我使用SELECT test1,test2那麼我需要一個OUT參數嗎? – CoderBapu
不能 - 在MySQL中返回很好:https://www.techonthenet.com/mysql/loops/return.php –