调用标量值函数问题

jie361539146 2014-07-02 05:49:36




在存储过程调用该函数,@info参数我也定义了,但是在存储过程中 select dbo.ASC2toVarchar(@Info)调用这个函数时,我把该ASCLL码扫描产生了数据,但是插入到表中的,还是3639303132333633373630353820这串数值,和我想要的6901236376058 这个条码没有转换过来。问:我怎么在存储过程中调用这函数,用扫描枪扫描条码时,能把扫描到的数据转换为条码上的数值呢?
...全文
404 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jie361539146 2014-07-07
  • 打赏
  • 举报
回复
引用 10 楼 Tiger_Zhao 的回复:
插入的代码如何写的? 是不是SP调用的是另外一个同名函数。
我数据库中的确是有好几个该函数的。等等,我把函数名字改改看。不过我觉得这个关系不大的吧。
Tiger_Zhao 2014-07-07
  • 打赏
  • 举报
回复
插入的代码如何写的?
是不是SP调用的是另外一个同名函数。
jie361539146 2014-07-07
  • 打赏
  • 举报
回复
引用 7 楼 chz415767975 的回复:
ASC2toVarchar 方便把这个函数代码贴出来
急啊 ,能帮忙看看解决吗?
jie361539146 2014-07-07
  • 打赏
  • 举报
回复
引用 7 楼 chz415767975 的回复:
ASC2toVarchar 方便把这个函数代码贴出来
CREATE FUNCTION [dbo].[ASC2toVarchar] ( @ASC2 varchar(100) ) RETURNS varchar(100) AS BEGIN DECLARE @I INT DECLARE @CHAR VARCHAR(100) DECLARE @LEN INT SET @I=1 SET @CHAR='' SET @LEN=LEN(@ASC2) WHILE @I<=@LEN BEGIN SELECT @CHAR=@CHAR+CHAR(dbo.hextoint(SUBSTRING(@Asc2,@I,2))) SET @I=@I+2 END RETURN (@CHAR) END
霜寒月冷 2014-07-07
  • 打赏
  • 举报
回复
ASC2toVarchar 方便把这个函数代码贴出来
jie361539146 2014-07-07
  • 打赏
  • 举报
回复
哪位能帮忙下,困扰好久的问题了。
jie361539146 2014-07-07
  • 打赏
  • 举报
回复
引用 3 楼 shinger126 的回复:
@info是定义的什么类型的数据?
@info 是一个varchar的数据类型啊。怎么调用,求指导。
jie361539146 2014-07-07
  • 打赏
  • 举报
回复
方便QQ联系吗?
jie361539146 2014-07-07
  • 打赏
  • 举报
回复
引用 12 楼 chz415767975 的回复:
[quote=引用 11 楼 jie361539146 的回复:] [quote=引用 10 楼 Tiger_Zhao 的回复:] 插入的代码如何写的? 是不是SP调用的是另外一个同名函数。
我数据库中的确是有好几个该函数的。等等,我把函数名字改改看。不过我觉得这个关系不大的吧。[/quote] dbo.hextoint 你sql里面这个函数可能存在问题,你单独调用试试[/quote] 这个单独调用时是没有问题的。这个是也是转换的函数。 ALTER function [dbo].[hextoint](@h varchar(8)) returns bigint as begin declare @r bigint set @r=0 declare @i bigint set @i=1 while @i<=len(@h) begin set @r=@r+ convert (bigint, (case when substring(@h,@i,1)<='9' then substring(@h,@i,1) when substring(@h,@i,1)<='A' then '10' when substring(@h,@i,1)<='B' then '11' when substring(@h,@i,1)<='C' then '12' when substring(@h,@i,1)<='D' then '13' when substring(@h,@i,1)<='E' then '14' when substring(@h,@i,1)<='F' then '15' End )) *power(16,len(@h)-@i) set @i=@i+1 end return @r end
霜寒月冷 2014-07-07
  • 打赏
  • 举报
回复
引用 11 楼 jie361539146 的回复:
[quote=引用 10 楼 Tiger_Zhao 的回复:] 插入的代码如何写的? 是不是SP调用的是另外一个同名函数。
我数据库中的确是有好几个该函数的。等等,我把函数名字改改看。不过我觉得这个关系不大的吧。[/quote] dbo.hextoint 你sql里面这个函数可能存在问题,你单独调用试试
Mr_BeasonZhou 2014-07-03
  • 打赏
  • 举报
回复
好像要设置配置一下sqlserver编辑器
jie361539146 2014-07-03
  • 打赏
  • 举报
回复
引用 1 楼 sjcss 的回复:
怀疑是你程序问题
我这边只是结合设备用存储过程来开发。我是有一个条码枪,扫描条码时会自动的把条码插入到表的info列中。但是我需要是的扫描条码上的数值,不是ASC码,所以我需要调用ASC转码函数。这样插入到表info列的就是条码上的数值了。但是调用不成功。这个是我调用时的定义的 @Info varchar(50) --输入参数 as begin select dbo.ASC2toVarchar(@Info) end
shinger126 2014-07-03
  • 打赏
  • 举报
回复
@info是定义的什么类型的数据?
美到心痛 2014-07-02
  • 打赏
  • 举报
回复
怀疑是你程序问题

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧