在 Transact-SQL 中,我有存储过程的输入参数
@DataTable InputTabel READONLY,
“InputTabel”定义为:
CREATE TYPE InputTabel AS TABLE
(
ID INT NULL,
RESULT_INDEX INT NULL
)
在 C# 方面,我使用以下代码来定义参数:
SqlParameter parameter = new SqlParameter( );
parameter.ParameterName = "@DataTable ";
parameter.SqlDbType = System.Data.SqlDbType.Structured;
parameter.TypeName = "InputTabel";
parameter.Value = theInputTable;
其中输入表定义为:
DataTable theInputTable = new DataTable("TheInputTableName");
theInputTable.Columns.Add( "ID", typeof( Int32 ) );
theInputTable.Columns.Add( "RESULT_INDEX", typeof( string ) );
我现在必须将这种方法转移到 MySQL,我该怎么做?
无论是在 C# 端还是在服务器端。
不幸的是 MySql 没有实现表值参数,但替代方案确实存在:
- 使用连接关闭后立即删除的临时表
但对通过此连接发出的所有查询都是可见的。唯一的缺点是必须在预期查询之前执行额外的查询(或更多),只是为了将数据插入临时表。
- 使用分隔字符串(“str1、str2、str3”)会显着降低性能,尤其是当字符串很长时。
有关这两种方法的更多信息:在MySQL中创建表变量 https://stackoverflow.com/questions/1524858/create-table-variable-in-mysql
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)