首页 新闻 会员 周边

sql server 字符串转换为uniqueidentifier报错,求高人指点,谢谢!

0
[已关闭问题] 关闭于 2015-08-21 17:41

sql server 2008 我写了一个存储过程,过程中有一个参数类型为uniqueidentifier,当我手动执行该存储过程时,报错:

CREATE PROCEDURE [dbo].[sp_GetNewAssetSingleNoPrefix] 
@assetID uniqueidentifier,
@companyID int

... ...


--1.直接调用
exec  [dbo].[sp_GetNewAssetSingleNoPrefix] '90CC331A-7D87-4CAD-B136-002CB7DEAD0E',23

--2.转换一下再调用
declare @id uniqueidentifier
select @id=CONVERT(uniqueidentifier,'90CC331A-7D87-4CAD-B136-002CB7DEAD0E')
exec  [dbo].[sp_GetNewAssetSingleNoPrefix] @id,23

以上两种情况都报错,求高人指点,用C#程序调用是没有问题的

报错信息如下:

Insufficient result space to convert uniqueidentifier value to char.

梦在旅途的主页 梦在旅途 | 初学一级 | 园豆:10
提问于:2015-08-21 17:19
< >
分享
所有回答(3)
0

如果你把这个uniqueidentifier类型的参数改成varchar呢?

顾晓北 | 园豆:10844 (专家六级) | 2015-08-21 17:21

我这里要求就是uniqueidentifier类型的,明明转换成了uniqueidentifier,但传入到存储过程时仍报错!

支持(0) 反对(0) 梦在旅途 | 园豆:10 (初学一级) | 2015-08-21 17:25

@梦在旅途: 什么叫转换成了uniqueidentifier?你调用的时候传的参数类型是guid?我建议你还是把参数改一下试试吧。。。

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2015-08-21 17:31

@顾晓北: CONVERT(uniqueidentifier,'90CC331A-7D87-4CAD-B136-002CB7DEAD0E') 不就是转换了吗?难道不是?

支持(0) 反对(0) 梦在旅途 | 园豆:10 (初学一级) | 2015-08-21 17:33
0

已解决,原因不是字符串转uniqueidentifier出问题,而是我的存储过程内部使用了uniqueidentifier转字符串,没有给varchar设定空间,所以报错了,不好意思,误导大家了,自己也晕了!

RIGHT(cast(@assetID as varchar),4)

改成:RIGHT(cast(@assetID as varchar(255)),4)

梦在旅途 | 园豆:10 (初学一级) | 2015-08-21 17:40
0

我想知道,怎么转成字符串类型的

 

呆萌如歌 | 园豆:202 (菜鸟二级) | 2016-11-09 17:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册