2011-12-06 144 views
0

我已經寫下了下面給出的存儲過程....它應該打印使用PRINT命令打印的值。而是打印這些值,當我從查詢分析器執行這個過程時,它顯示'命令(s)成功完成'。 ü可以建議代碼或其他解決方案命令成功完成

預先感謝任何修改...... :)

CREATE PROCEDURE getPullCords(@start_dt varchar(25),@end_dt varchar(25)) 
AS 
declare @t varchar(25),@p varchar(50),@v int 
declare @mycur CURSOR 

SET @mycur = CURSOR FAST_FORWARD 
FOR 
select timestamp,point_id,_val from tcf1_pullcord where timestamp between @start_dt and @end_dt 

OPEN @mycur 
FETCH NEXT FROM @mycur 
INTO @t,@p,@v 

WHILE @@FETCH_STATUS = 0 
BEGIN 
PRINT @t 
PRINT @p 
PRINT @v 
FETCH NEXT FROM @mycur 
INTO @t,@p,@v 
END 

CLOSE @mycur 
DEALLOCATE @mycur 

GO 
+0

您使用的是SQL Server Management Studio(Express)嗎? – Nik

回答

1

無論你寫什麼打印數據是正確的。

但是,如果有數據要打印,那麼它正在打印,您將無法打印數據Results選項卡。

要查看您的打印數據,請選擇結果部分的Messages選項卡。

謝謝。

+0

嘿謝謝....實際上我忘記了數據庫最近已經改變。在我通過的日期範圍之間沒有數據。 – Dharmesh

3

從打印語句的輸出不會去查詢結果窗口。自從我使用查詢分析器(vs management studio)以來,這已經有一段時間了,但是尋找一個單獨的「消息」選項卡,您應該可以在那裏找到您的打印輸出。

+1

它在「消息」窗口本身顯示此消息....網格窗口爲空... – Dharmesh

+0

@Dharmesh Ctrl + T將它切換爲文本輸出,所以如果你不像空格輸出一樣。 Ctrl + D會將其切換回來。這適用於查詢分析器和SSMS。 –

2

運行命令:

select timestamp,point_id,_val from tcf1_pullcord where timestamp between @start_dt and @end_dt 

自身(取代@start_dt@end_dt瓦爾您用於測試值)。它是否返回任何行?如果沒有,程序永遠不會進入while循環並打印任何東西。

如果確實返回了行,請嘗試在循環外部放置PRINT'測試'以確保其行爲正確。

+0

嘿,謝謝...你是絕對正確的....我輸入錯誤的日期範圍。這些日期範圍之間沒有可用的數據.. – Dharmesh

2

右鍵單擊查詢窗口>連接>斷開。然後按F5或執行;登錄將顯示。登錄。如果您最初收到錯誤消息,請添加USE語句或修復錯誤,然後重試上述步驟。現在,您的光標將至少執行一次並顯示結果,然後您需要再次執行這些步驟。

如果在同一會話期間再次執行,你會發現相同的消息:

Command(s) completed successfully. 

很奇怪的錯誤...

0

遇到了一個問題,有完整的存儲過程的打印指令(S)而不是在查看此線程時返回結果集和思考解決方案。我發佈的情況下,任何人都可以受益。

我的問題是傳遞參數的大小大於我傳遞給它的變量。這是通過我的存儲過程繞過所有邏輯參數,因爲它沒有滿足任何條件。