单个机器上的SQL语句'缺少参数'失败

时间:2012-07-18 16:46:25

标签: sql

我正在使用vb.net,并且我创建了一个与OleDBConnection对象一起使用的sql语句。当我运行我的sql(下面)时,ExecuteReader会抛出一个错误(也在下面)。问题是它可以在50多台en-US机器上运行,但是现在我在德国有了第一个客户端,它在他们的机器上失败了。我将我的开发机器设置为德语设置以尝试复制该问题,但它对我来说效果很好。我复制了他们确切的数据文件,它可以在我的机器上运行。所以看起来它与非美国机器有关吗?

这是SQL语句:

SELECT Val(IIf(IsNumeric([Sequence]), [Sequence], '0')), * 
FROM MyTable 
ORDER BY SomeOtherField, 1

所以简而言之,我想通过序列列进行二次排序,但是如果Sequence不是数字,我只需要给它一个'0',这样它就可以根据动态进行排序列'1'我正在创建/选择即时。

这是德国机器上的错误: Fuer mindestens einen erforderlichen参数wurde kein Wert angegeben。
(粗略翻译:至少有一个必需参数未指定值)

有没有人对我的问题有什么想法?提前感谢您提供给我的任何帮助。

-Greg

1 个答案:

答案 0 :(得分:1)

这只是猜测。但是,尝试用case语句替换iif():

SELECT (case when IsNumeric([Sequence]) = 1 then [Sequence]
             else '0'
        end),
       mt.* 
FROM MyTable mt
ORDER BY SomeOtherField, 1

我怀疑你的其他系统正在使用Access,德国系统正在使用SQL Server。 SQL Server无法识别iif。