【问题标题】:Sybase SQL QUERY - error while executing stored procedureSybase SQL QUERY - 执行存储过程时出错
【发布时间】:2014-07-03 07:50:19
【问题描述】:

当我尝试执行此存储过程时,我收到此错误“数据库连接器错误:'不允许从数据类型 'CHAR' 到 'INT' 的隐式转换。使用 CONVERT 函数运行此查询”怎么来的?我怎样才能解决这个问题?谢谢

这是我用来执行 SP 的查询:

CREATE PROCEDURE TestProc2(@store char(4))
AS
BEGIN
SELECT * FROM stores WHERE stor_id=@store
END

exec TestProc2 @store = "7066"

sp_help stores

stor_id,     char,       4
stor_name,   varchar,    40
stor_address,varchar,    40
city,        varchar,    20
state,       char,       2
country,     varchar,    12
postalcode,  char,       10
payterms,    varchar,    12

该列设置为 char(4),所以我认为查询和数据类型不匹配

顺便说一句,我尝试了(“7066”)单引号,双引号和不带引号,我仍然得到相同的 sql 错误。请帮忙

PS 我正在使用 sybase,谢谢!下面也是错误的截图。

你们需要帮助我的任何其他信息吗?谢谢

http://tinypic.com/r/2n24huq/8

【问题讨论】:

  • 编辑您的问题并包含失败的查询。
  • 只是预感.. 尝试单引号而不是双引号
  • 我尝试了单引号,双引号和不带引号,我仍然得到相同的 sql 错误。请帮忙

标签: sql sql-server sybase


【解决方案1】:

看起来stores 表中的stor_id 字段是int。更改您的存储过程以接受 int 而不是 char(4)

CREATE PROCEDURE TestProc2(@store int)
AS
BEGIN
SELECT * FROM stores WHERE stor_id=@store
END

【讨论】:

  • 这也是它在列中设置为char(4)的问题,一切都匹配我不知道为什么会出错
  • @user3558483 -- 你能运行sp_help stores 并发帖吗?想看看你的表定义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
相关资源
最近更新 更多