【发布时间】:2017-01-14 05:40:04
【问题描述】:
我在 MySQL 运行服务器 5.6 中有一个带有两个 OUT 参数 'test1' 和 test2' 的存储过程
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 不允许返回。如果我使用 SELECT test1, test2 那么我需要一个 OUT 参数吗?
-
不——在 MySQL 中返回很好:techonthenet.com/mysql/loops/return.php
-
不——在这种情况下你不需要输出参数。
-
语法上和SELECT AS一样
标签: c# mysql stored-procedures odbc