我已经在sql server中成功创建了我的存储过程,该过程包含3个参数 - TABLE_NAME,ATTR_NAMES和ATTR_VALUES。
实施例
exec Insert 'name,descr','''abc'',''cde''','tableEmployee'
代码:
CREATE PROCEDURE [dbo].[Insert]
(
@table_name varchar(50),
@attr_names varchar(50),
@attr_values varchar(50)
)
AS
insert into @table_name (col1, col2, col3)
values (val1, val2, val3)
我的查询是如何从c#代码调用此过程!
如何以与
相同的方式传递参数'name,descr','''abc'',''cde''','tableEmployee'
一次进入SQL Server的存储过程?
请帮助...... :((!!!
答案 0 :(得分:0)
您可能会这样做:
using(var cmd = sqlConn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "Insert";
var tblName = cmd.Parameters.Add(new SqlParameter("table_name", SqlDbType.NVarChar));
var attr_names = cmd.Parameters.Add(new SqlParameter("attr_names", SqlDbType.NVarChar));
var attr_values = cmd.Parameters.Add(new SqlParameter("attr_values", SqlDbType.NVarChar));
tblName.Value = "tableEmployee";
attr_names.Value = "name,descr";
attr_values.Value = "'abc','cde'";
cmd.ExecuteNonQuery();
}
但是,您在存储过程中犯了几个错误。并使用' Insert'作为存储过程的名称是非常不幸的,因为它是SQL中的保留关键字。
正如其他人在评论中指出的那样,以下内容无效:
insert into @table_name (col1,col2,col3) values (val1,val2,val3)
在上文中,@table_name
将引用本地表变量(您尚未定义),val1,val2,val3
也会产生错误,因为您还没有真正定义它们。< / p>