转换无法从字符串转换为uniqueidentifier

时间:2015-09-30 15:32:22

标签: sql sql-server-2008 tsql casting uniqueidentifier

我有一套约200个来自收入批次的唯一ID,我需要运行存储过程。我的想法是创建临时表,插入唯一值,对临时表运行存储过程并删除临时表。但是每当我执行我的代码时,我都会收到错误消息"从字符串转换为uniqueidentifier时转换失败。"我无法弄清楚为什么我会收到此错误。是否有人熟悉此错误可能会帮助我?你能查看我的代码并查看此消息的原因吗?任何帮助将不胜感激。代码如下,样本大小唯一ID

CREATE TABLE #Removal (RevID uniqueidentifier, LUID char (12))
INSERT  INTO #Removal(RevID, LUID)VALUES
(Cast ('rev-55326898'AS uniqueidentifier), '8-11838757'),(Cast ('rev-55326899'AS uniqueidentifier), '8-16960881')
declare @field1 uniqueidentifier
declare @field2 INT
declare cur CURSOR LOCAL for
select RevID from #Removal
Open cur
fetch next from cur into @field1
while @@FETCH_STATUS = 0 BEGIN
exec USP_REVENUE_DELETE @field1, @field2
fetch next from cur into @field1
End
Close cur
deallocate cur
Drop table #Removal

2 个答案:

答案 0 :(得分:1)

您的值(即:rev-55326898)与SQL Server中唯一标识符的格式不匹配。

SQL Server中的唯一标识符是16字节的GUID。有两种方法可以初始化数据类型的值(来自MSDN):

  
      
  • 使用NEWID功能。
  •   
  • 通过xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx形式的字符串常量转换,其中每个x都是十六进制   0-9或a-f范围内的数字。例如,   6F9619FF-8B86-D011-B42D-00C04FC964FF是一个有效的uniqueidentifier   值。
  •   

请参阅:https://msdn.microsoft.com/en-us/library/ms187942.aspx

答案 1 :(得分:0)

字符串中的uniqueidentifier需要xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx表格。