SQL Server函数在两个不同的查询窗格中返回不同的结果

时间:2015-12-28 02:00:12

标签: sql sql-server function tsql

让我感到沮丧!:我有一个我称之为的功能......

SELECT UNIT 
FROM POWER_ASSETS.[dbo].[returnbaseload] ('03-12-2015','EUR') 
WHERE C_TIC = 'LSE:SOE'

功能" returnbaseload"查询视图中的值并使用值执行一些计算。简单。它返回29行。

如果我在新的SQL查询选项卡中打开它,请复制n粘贴...它将返回533行。

如果我将新标签复制并粘贴回旧标签.... 29行。

有什么想法吗?让我击败。

P.S还尝试了

Use POWER_ASSETS
GO

以防万一在主人的某处意外创建了重复的表...

我很担心,因为我最终从vb程序调用该函数,并从vb中的sql查询中获取了错误的行数。是什么让我调查...正确的行数来自新标签,533行。

1 个答案:

答案 0 :(得分:1)

在使用相同参数时,确定性选择无法获取不同的结果集。周期。

评论表明你必须过度使用或遗漏某些东西。

1 - 确保两个窗格都使用相同的内容。

[SERVER/INSTANCE].[DATABASE].[SCHEMMA].[TABLE]

到目前为止,这是最常见的情况。 它也适用于功能/ SP呼叫。确保您调用的是同一个对象,而不是它的不同版本。

2 - 确保两者都使用相同的用户/权限。

也许你正在使用不同的连接参数

3 - 确保您的查询没有隐含的转换。

您在此处使用某种varchar进行日期转换。确保在两个选项卡中都有相同的设置(整理,从unicode复制到UTF-8存档等)。您也可以尝试使用某种GETDATE()函数查询表,而不是处理该varchar文字。

4 - 确保查询时数据没有变化。

停止服务器并将其放在单个用户中。也许您的数据正在更新。

5 - 确保查询中没有任何随机函数。

有时我们得到了有趣的BL,而且有些人不知道在其中添加了一些兰德逻辑。

6 - 确保你不仅仅是醉酒或累了。

有一次,我和朋友一起工作的时间+ 20小时不停。他对一辆越野车" dot"而生气。在屏幕上。转过来,它是一个真正的错误(一只苍蝇),并试图用鼠标指针摆脱它。 冷静下来并打电话给朋友看看它。