CREATE PROCEDURE GetDisplayNameByBatchAttibuteValues
(
@ListItemValue varchar(8000),
@ListDisplayName varchar(8000) output
)
ASbegin
declare @str varchar(8000) set @str =''
select @str = @str +',' + ListDisplayName from ProductAttributeLookupListItems where ListItemValue in(@ListItemValue) set @ListDisplayName=stuff(@str,1,1,'')
print @ListDisplayName
end
GO@ListItemValue 传递14,18,22这样的子符串
错误:
System.Data.SqlClient.SqlException: 将 varchar 值 '14,18,22' 转换为数据类型为 int 的列时发生语法错误。请高手指教!感激涕零~
(
@ListItemValue varchar(8000),
@ListDisplayName varchar(8000) output
)
ASbegin
declare @str varchar(8000) set @str =''
select @str = @str +',' + ListDisplayName from ProductAttributeLookupListItems where ListItemValue in(@ListItemValue) set @ListDisplayName=stuff(@str,1,1,'')
print @ListDisplayName
end
GO@ListItemValue 传递14,18,22这样的子符串
错误:
System.Data.SqlClient.SqlException: 将 varchar 值 '14,18,22' 转换为数据类型为 int 的列时发生语法错误。请高手指教!感激涕零~
如何能将那个自动的两个''号去掉,我试过用replace也不行,有什么好方法,谢谢指教
(
@ListItemValue varchar(8000),
@ListDisplayName varchar(8000) output
)
ASbegin
declare @str varchar(8000)
declare @tb table(a int)
while charindex(',',@s)>0
begin
insert @tb values(cast(left(@s,charindex(',',@ListItemValue )-1) as int))
set @s = stuff(@ListItemValue ,1,charindex(',',@ListItemValue ),'')
end
insert @tb values(@ListItemValue) set @str =''
select @str = @str +',' + ListDisplayName from ProductAttributeLookupListItems where ListItemValue in(select a from @tb) set @ListDisplayName=stuff(@str,1,1,'')
print @ListDisplayName
end
GO
用下面这个:
CREATE PROCEDURE GetDisplayNameByBatchAttibuteValues
(
@ListItemValue varchar(8000),
@ListDisplayName varchar(8000) output
)
ASbegin
declare @str varchar(8000)
declare @tb table(a int)
while charindex(',',@ListItemValue )>0
begin
insert @tb values(cast(left(@s,charindex(',',@ListItemValue )-1) as int))
set @s = stuff(@ListItemValue ,1,charindex(',',@ListItemValue ),'')
end
insert @tb values(@ListItemValue) set @str =''
select @str = @str +',' + ListDisplayName from ProductAttributeLookupListItems where ListItemValue in(select a from @tb) set @ListDisplayName=stuff(@str,1,1,'')
print @ListDisplayName
end
GO
其中set @s未定义
是不是@str?
(
@ListItemValue varchar(8000),
@ListDisplayName varchar(8000) output
)
ASbegin
declare @str varchar(8000)
declare @tb table(a int)
while charindex(',',@ListItemValue )>0
begin
insert @tb values(cast(left(@ListItemValue,charindex(',',@ListItemValue )-1) as int))
set @s = stuff(@ListItemValue ,1,charindex(',',@ListItemValue ),'')
end
insert @tb values(@ListItemValue) set @str =''
select @str = @str +',' + ListDisplayName from ProductAttributeLookupListItems where ListItemValue in(select a from @tb) set @ListDisplayName=stuff(@str,1,1,'')
print @ListDisplayName
end
GO
CREATE PROCEDURE GetDisplayNameByBatchAttibuteValues
(
@ListItemValue varchar(8000),
@ListDisplayName varchar(8000) output
)
ASbegin
declare @str varchar(8000)
declare @tb table(a int)
while charindex(',',@ListItemValue )>0
begin
insert @tb values(cast(left(@ListItemValue,charindex(',',@ListItemValue )-1) as int))
set @ListItemValue = stuff(@ListItemValue ,1,charindex(',',@ListItemValue ),'')
end
insert @tb values(@ListItemValue) set @str =''
select @str = @str +',' + ListDisplayName from ProductAttributeLookupListItems where ListItemValue in(select a from @tb) set @ListDisplayName=stuff(@str,1,1,'')end
GO但是没有返回结果,很奇怪