使用存储过程查找结果集的排序原因

时间:2011-04-06 12:39:10

标签: sql stored-procedures dynamic-sql

我在sql存储过程中遇到问题。我有一个存储过程,其中包含动态SQL查询,创建临时表,将数据插入此临时表。在我的本地,此存储过程的结果显示正常。但在生产环境中,结果的排序会发生变化。我只有该生产的选择权限,所以我无法在生产数据库中运行该sp。可以任何人建议任何解决方案。是否有可能运行该SP并在生产sp中查看结果。谢谢

3 个答案:

答案 0 :(得分:0)

我检查两个数据库的整理是否相同。假设MS Sql Server,右键单击Mgmt Studio中的数据库节点并查看“属性”。整理将类似于SQL_Latin1_General_CP1_CI_AS

如果它们不匹配,除非您指定明确的ORDER BY子句,否则“自然”排序顺序可能会有所不同。

答案 1 :(得分:0)

我担心你的问题不是很具体,但是如果你依赖于结果的顺序而你没有在返回结果的查询上使用ORDER BY(在你的情况下,它是可能是最后的陈述)然后你应该。除非您使用ORDER BY

,否则无法保证结果的顺序

如果您已经,也许您可​​以发布查询的相关部分。

答案 2 :(得分:0)

如果没有更多信息,我可以想到两个可能性:

1)生产和本地环境的配置不同,特别是关于tempdb数据库的排序规则(除非您在CREATE语句中另行指定,否则它将是临时表使用的默认排序规则)。因此,字符字段的任何排序都会有不同的行为。

2)你根本没有做任何特定的排序,在这种情况下,'默认'顺序由许多事情决定,并且在服务器之间不太可能相同。