0

我想编写一个存储过程SQL server它将insert记录到数据库中,我想在其中将表名列名及其作为参数传递给存储过程。

如果有帮助,我正在使用 asp.net 三层技术。

如果不可能,请告诉我一些替代方案。提前致谢

4

3 回答 3

0

在 NVARCHAR 中动态构建 SQL,并将其传递给存储过程 sp_executesql:

DECLARE @sql NVARCHAR(MAX);
-- build your SQL in the NVARCHAR

EXEC sp_executesql @sql;
于 2013-06-07T07:44:32.787 回答
0

这在理论上是可能的,但恐怕这并不是最好的解决方案。

这种方法的问题是您不知道很多参数,例如列名、存在多少列名、它们的类型等。

这意味着您必须将参数作为某些默认类型(例如 nvarchar)传递,然后将此类型转换为可能导致性能和其他问题的特定列类型。

我建议您尝试使用实体框架或其他一些 ORM 工具来为您处理插入。

于 2013-06-07T09:06:29.143 回答
0

最好的答案是“不要那样做!”

关系数据库最适合用于建模......关系,并且要做到这一点,您需要对要存储的数据进行限制和设计。这意味着您(或您的 ORM)将知道基础表的外观。

如果您想要一个简单地抛出对象的地方,那么请考虑使用像 MongoDB 这样的 nosql 文档存储。

于 2013-06-07T09:27:07.817 回答