好吧,我不是SQL大師或DBA,所以如果有更好的方法可以做到這一點,那麼請自由發言。如何使用開始和結束語句構建動態TSQL查詢
但是我需要特別做的是增強現有的使用dyanmic SQL不存在重複值的存儲過程。 SQL在單獨表格中獨立時是件小事。不過現在,我遇到了一個通用存儲過程的問題,我有一些通用的表,並使用TSQL。問題在於BEGIN和END語句。
SET @Query = 'IF NOT EXISTS (SELECT ' + @DescriptionFieldName + '
FROM '+ @TableName +'
WHERE (' + @DescriptionFieldName + ' = ''' + @DescriptionValue + ''')
BEGIN
INSERT INTO '+ @TableName +' (' + @DescriptionFieldName + ', LastUser, LastUpdate) VALUES ('''+ ISNULL(@DescriptionValue, '') +''', '''+ ISNULL(@LastUser, '') +''',Convert(Varchar, GetDate())) ' + 'SELECT CAST(scope_identity() AS int);
END'
EXEC (@Query)
當我EXEC更改爲PRINT,一切似乎是OK的語法明智的,但它使用EXEC時提供了以下錯誤:
「關鍵字附近有語法錯誤‘BEGIN’ 「。
有沒有人有關於如何解決此問題的想法,以便查詢將工作?
謝謝!
是的好抓 - 畢竟與BEGIN和END無關。我還必須在@DescriptionValue周圍添加(3)tic標記(爲將來的讀者修改原始帖子),因爲它是這樣的varchar:WHERE('+ @DescriptionFieldName +'='''+ @DescriptionValue +'''))。 (3)tic方法是否是最好的方法? – atconway 2011-02-01 16:19:01