我有一套约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
答案 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 值。
答案 1 :(得分:0)
字符串中的uniqueidentifier需要xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx表格。