我通常在工作中遇到此问题,我是SQL开发人员。应用程序开发人员需要将数据从他们的应用程序传递到数据库中才能在proc中运行,因为它比在循环中为每一行运行查询更有效。
通常,选项是...如果它是单个值,则将其全部推入单个字符串,以逗号分隔,然后将其传递给proc上的大字符串参数。在SQL中,我们有一个函数,可将字符串解析成表,然后从那里开始工作。
另外两个选项是传递XML并以SQL解析。或使用用户定义的表类型并在proc上使用Table参数。
而不是创建各种自定义表类型。我正在考虑创建一个只包含一堆通用命名的列的用户定义表类型,所有列都是可空的,并且是VARCHAR或NVARCHAR。
然后可以在需要将应用程序代码将数据表传递到SQL进行某种处理的所有地方使用单个自定义表类型。
我对应用程序代码没有太多的经验(在这种情况下是使用C#),所以我不知道是否有更好的方法来处理这些情况?或者,如果我的解决方案提出的问题使它的工作量超出了其价值。
更新: 我没有想到/只是意识到的一件事是,这将给C#开发人员带来麻烦。因为他们将需要“填充”不需要的列。