2013-03-02 60 views
0

我有一个动态内容调查问卷,我有需要与SQL提议的控件? 。在SQL Server的select语句中有动态sql吗?

我试图从表中Questionnaire选择并运行储存在下面的`PrepopulateContentSQL”列中的SQL语句的查询返回单个值

例:

Select name from Agency 

我的表Questionnaire

QuestionID int 
Required bit 
Data_Type int 
Control_Type int 
Data_Choices nvarchar 
Data_Max_Length int 
Question_Group_Id int 
Question_Label nvarchar 
Question_Order int 
PrepopulateContentSQL nvarchar 
PrePopulated bit 

我想也许一个功能

Select 
    QuestionID, Required, Control_Type, Data_Choices, 
    GetPrepopulated(PrepopulateContentSQL) As PreValue 
From 
    Questionnaire 
+0

我读的功能不是最好的解决方案什么是替代品? – Chaka 2013-03-02 21:34:08

+0

这不是功能不好的解决方案;这是错误使用的功能是不好的解决方案。 – 2013-03-02 21:36:08

+0

@Chaka。 。 。你的问题是什么?对于许多目的而言,一个函数恰好是您想要做的正确解决方案。 – 2013-03-02 21:55:06

回答

0

您确定要存储每次执行的sql字符串吗?如果它们像“从代理机构选择名称”一样简单,那么我想它们可以很容易地实现为一个类似宏的系统,您可以在其中预定义一些查询,而预填充列可以只保存一个引用。

这会给你更多的安全性(因为你不再需要太担心那个sql的内容),也许给你的范围来定制UI来显示@AgencyName而不是'从代理中选择名称'

只是一个想法...

+0

我不完全遵循,你能给我一个例子吗? – Chaka 2013-03-02 22:03:24

+0

那么,可以说,您只有2个查询用于预填充字段“从代理机构中选择姓名”和“从代理机构中选择last_billed”。通过存储原始sql,您可能会冒着“从代理机构删除*”的风险......如果您的表有一个“prepopulate_query_id”列,您的应用程序只需将这两个查询映射到id的1和2并实施他们适当。 – chrisb 2013-03-02 22:07:40