2011-04-06 54 views
0

我在sql存儲過程中遇到問題。我有一個存儲過程,其中包含一個動態的SQL查詢,創建臨時表,將數據插入此臨時表。在我的本地這個存儲過程的結果顯示罰款。但在生產環境中,結果的順序會發生變化。我只有該生產的選擇權限,所以我無法在生產數據庫中運行該sp。任何人可以提出任何解決方案。是否有可能運行該SP並查看生產結果sp。謝謝使用存儲過程查找結果集的排序原因

+0

SQL Server?甲骨文? – MartW 2011-04-06 12:44:37

+0

我正在使用SQL Server – user638904 2011-04-07 07:50:45

回答

0

恐怕你的問題不是很具體,但如果你依賴於結果的順序,並且你沒有在返回結果的查詢上使用ORDER BY(在你的情況中,它可能是最後一個聲明),那麼你應該。除非您使用ORDER BY,否則結果順序不能保證。

如果你已經是,也許你可以發佈你的查詢的相關部分。

+0

感謝您的回覆。在查詢中完成排序。主要問題在於它只發生在一個存儲過程而不發生在其他Sp上。請讓我知道如果你需要任何其他細節 – user638904 2011-04-06 13:20:01

0

我會檢查兩個數據庫的整理是一樣的。假設MS Sql Server,右鍵單擊Mgmt Studio中的數據庫節點並查看屬性。排序規則將類似於SQL_Latin1_General_CP1_CI_AS

如果它們不匹配,除非您指定明確的ORDER BY子句,否則「自然」排序順序可能會有所不同。

+0

嗨,謝謝,我很想嘗試你給的解決方案。 – user638904 2011-04-06 13:26:52

+0

嗨在這兩種環境下對照都是一樣的。這裏是查詢的簡要描述。首先我們選擇記錄並插入臨時表中。然後再創建一個臨時表來存儲最終結果。在這個臨時表中首先插入標題。'插入到#TempChaseReport值(''學生FName'',''學生LName'',''練習考試1'',''練習考試2''''' – user638904 2011-04-07 07:34:48

+0

然後我在第一步循環選定的記錄並將其插入此tempChaseReport表中。插入所有記錄後,我創建了一個更多的臨時表,其中我正在做以下查詢。插入到#TempChaseReport2選擇* FROM #TempChaseReport其中id_num = 1 插入#TempChaseReport2選擇* FROM #TempChaseReport 其中id_num!= 1按MgrLoginID,LastName,myflag順序排列。 – user638904 2011-04-07 07:39:11

0

我能想到的兩種可能把我的頭頂部沒有更多的信息:

1)生產和當地的環境中配置不同,尤其是在tempdb數據庫的核對(這將是臨時表使用的默認排序規則,除非您在CREATE語句中另行指定)。因此任何字符字段的排序都會有不同的表現。

2)你根本沒有做任何特定的排序,在這種情況下,'默認'順序是由很多事情支配的,並且在服務器之間不太可能是相同的。

+0

我已經完成了在存儲過程中的命令。我只是檢查數據庫中的排序規則。感謝您的回覆。在數據庫中, – user638904 2011-04-06 13:26:19

+0

排序規則相同。請讓我知道是否有其他參數。 – user638904 2011-04-08 08:50:10