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.
如果你把这个uniqueidentifier类型的参数改成varchar呢?
我这里要求就是uniqueidentifier类型的,明明转换成了uniqueidentifier,但传入到存储过程时仍报错!
@梦在旅途: 什么叫转换成了uniqueidentifier?你调用的时候传的参数类型是guid?我建议你还是把参数改一下试试吧。。。
@顾晓北: CONVERT(uniqueidentifier,'90CC331A-7D87-4CAD-B136-002CB7DEAD0E') 不就是转换了吗?难道不是?
已解决,原因不是字符串转uniqueidentifier出问题,而是我的存储过程内部使用了uniqueidentifier转字符串,没有给varchar设定空间,所以报错了,不好意思,误导大家了,自己也晕了!
RIGHT(cast(@assetID as varchar),4)
改成:RIGHT(cast(@assetID as varchar(255)),4)
我想知道,怎么转成字符串类型的