有没有办法编写SQL Server存储过程,它是强类型的(即返回已知的列结果集)并使其语句组成为动态的。SQL Server 2005/2008组使用参数的语句不使用动态SQL?
喜欢的东西:
SELECT SUM(Column0) FROM Table1
GROUP BY @MyVar
我试过下面还有:
SELECT SUM(Column0) FROM Table1
GROUP BY CASE @MyVar WHEN 'Column1' THEN Column1 ELSE Column2
第二条语句只能在场景中的DB类型的列1和列2是相同的。如果它们不是,则SQL引擎会抛出类似于以下内容的错误:“将nvarchar值'SYSTEM'转换为数据类型[The TYPE TYPE]时转换失败。”
我可以做些什么来实现强大的结果集,但还有一些动态的部分 - 即我的案例中的石斑鱼?这将暴露给LINQ。
编辑:
看起来你可以做到,但你不应该!绝对是过度杀伤。测试显示数千倍的执行计划。只有在更大的结果集时它才会变慢。
+1整齐!我即将说这是不可能的......你每天都在继续学习新的东西! – 2009-11-23 16:44:38
@Ivan:好的,我应该分组NULL.Please看我的更新。 – gbn 2009-11-23 18:18:09
我明白了。谢谢。 – 2009-11-23 18:22:23