【问题标题】:Two queries on Sybase giving different resultSybase 上的两个查询给出不同的结果
【发布时间】:2017-02-16 03:35:51
【问题描述】:

以下是在sybase 中运行的两个proc。第一个具有带值的参数名称,第二个只有值。第一个运行良好,但是当我运行第二个时,我得到Implicit conversion from datatype 'INT' to 'VARCHAR' is not allowed. Use the CONVERT function to run this query 有人能告诉我为什么吗?

第一:

exec pu @a=null, @b=null, @c=null, @d=null, @e=null, @f=null, @g='2013-Jun-12 22:10:00.670', @h=100, @i=2, @j=null, @k=null, @l=null, @m=null, @n=0, @o='P', @p=null, @q=null, @r=null, @s=null, @t='junit', @u=null, @v=null, @w=null

第二:

exec pu ( null, null, null, null, null, null, '2013-Jun-12 22:10:00.187', 100, 2, null, null, null, null, 0, 'P', null, null, null, null, 'junit', null, null, null )

【问题讨论】:

  • 第一个 exec pu @a=null,@b=null,@c=null,@d=null,@e=null,@f=null,@g='2013-Jun-12 22:10:00.670',@h=100,@i=2,@j=null,@k=null,@l=null,@m=null,@n=0,@o='P',@ p=null,@q=null,@r=null,@s=null,@t='junit',@u=null,@v=null,@w=null
  • 第二个 exec pu ( null, null, null, null, null, null, '2013-Jun-12 22:10:00.187', 100, 2, null, null, null, null, 0 ,'P',空,空,空,空,'junit',空,空,空)
  • 第一个查询运行良好,但第二个查询不允许从数据类型“INT”到“VARCHAR”的隐式转换。使用 CONVERT 函数运行此查询。
  • 您需要使用edit 选项来完成问题。
  • 调用似乎相同,因此我们需要查看存储过程pu 才能为您提供帮助。仅供参考,当插入命令中的字符值缺少引号时会引发该错误。

标签: sybase


【解决方案1】:

还可能发生的情况是,参数的定义与您期望的顺序不同。

在场景 1 中,您不会看到问题,因为参数是按名称引用的。

但是,在场景 2 中,您使用的位置参考可能会暴露此问题。

请检查 proc 定义并确保参数的声明顺序与预期的相同。

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2011-01-14
    • 2014-03-26
    相关资源
    最近更新 更多