0
我已經在SQL Server 2008的存儲過程我經由DECLARE @query NVARCHAR(MAX)
申報@query
PARAM在數據集的列,我然後根據在發送的數據的類型來設置此@query
然後我使用exec [sys].[sp_executesql] @query
到執行存儲過程。SQL查詢沒有顯示在Visual Studio
我遇到的問題是我在Visual Studio中使用DataSet,鏈接到此存儲過程(用於報表)。
當我以這種方式(使用@query
)執行存儲過程時,數據集不會拾取要顯示的列數據。我不得不創建存儲過程這樣(與@query
),因爲我需要在where子句取決於發送的數據是不同的
我的代碼:
CREATE PROCEDURE [dbo].[p_Test_GetFooData]
@pName VARCHAR(250) = '',
@pID INT = NULL
AS
BEGIN
DECLARE @query NVARCHAR(MAX)
SET @query = 'SELECT FOO.FirstName, FOO.LastName
FROM Test.FooOne AS FOO'
IF (@pName = '--- SELECT ---')
BEGIN
SET @query = @query + ' WHERE FOO.ID = '
+ CONVERT(VARCHAR(50), @pID) + ''
END
ELSE
BEGIN
SET @query = @query + ' WHERE FOO.ID = '
+ CONVERT(VARCHAR(50), @pID) + ' AND
PP.FirstName + LIKE ''%' + @pName
+ '%'' '
END
EXEC [sys].[sp_executesql] @query
END
我已經測試過的查詢和它在我運行存儲過程時返回正確的數據。當我不使用SET @query = 'SELECT STATEMENT' EXEC @query
時,數據集按照它應該的那樣工作。
任何幫助將不勝感激。
數據集是無法確定的列是什麼原因他們可能會有所不同。即使你正在設置要返回的列而沒有改變它們,你可能會有這種可能性。因此數據集不會設置任何列。你可以手動添加這些。 – 2012-02-13 06:14:10
此查詢無法正常工作。查詢中存在語法錯誤。請在這裏再次粘貼查詢.... – 2012-02-13 06:16:10
'---選擇'。在這裏,兩個破折號將該行標記爲註釋,因此它會忽略結尾引號('''),並且會發生語法錯誤... – 2012-02-13 06:18:14