2013-03-02 86 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