我想在SQL server
中写一个存储过程,它将insert
记录到数据库中,我想传递 table-name 和列名,其值为存储过程的参数。
如果有帮助,我正在使用asp.net三层技术。
如果不可能,请告诉我一些替代方案。 提前谢谢
答案 0 :(得分:0)
动态构建NVARCHAR中的SQL,并将其传递给存储过程sp_executesql:
DECLARE @sql NVARCHAR(MAX);
-- build your SQL in the NVARCHAR
EXEC sp_executesql @sql;
答案 1 :(得分:0)
理论上这是可能的,但我担心这不是最好的解决方案。
这种方法的问题在于,您不需要预先知道很多参数,例如列名,存在多少列名,类型是什么等等。
这意味着您必须将参数作为某些默认类型传递,例如nvarchar,然后将此类型转换为特定的列类型,这可能会导致性能和其他问题。
我建议您尝试使用Entity framework或其他一些ORM工具来处理插入内容。
答案 2 :(得分:0)
最佳答案是“不要那样做!”
关系数据库最适合用于建模......关系,为此你需要有一个边界和一个关于你要存储的数据的设计。这意味着您(或您的ORM)将知道基础表的外观。
如果你想要一个简单地抛出对象的地方,那就考虑使用像MongoDB这样的nosql文档存储。