请教:存储过程对象名 'dbo.dt_test' 无效
CREATE procedure [dbo].[dt_test]
(
@str varchar(1024), --要分割的字符串
@split varchar(10) --分隔符号
)
as
begin
declare @location int
declare @start int
declare @length int
set @str=ltrim(rtrim(@str))
set @location=charindex(@split,@str)
set @length=1
while @location<>0
begin
set @start=@location+1
set @location=charindex(@split,@str,@start)
set @length=@length+1
end
return @length
end
GO
select dbo.dt_test('78,1,2,3',',')
为什么执行后显示:服务器: 消息 208,级别 16,状态 1,行 1
对象名 'dbo.dt_test' 无效。
请指教,是sql2000
[解决办法]
exec dbo.dt_test '78,1,2,3',','
试试,存储过程的调用一般用exec
[解决办法]
CREATE procedure [dbo].[dt_test]( @str varchar(1024), --要分割的字符串 @split varchar(10), --分隔符号 @ReturnValues INT OUTPUT)asbegin declare @location int declare @start int declare @length int set @str=ltrim(rtrim(@str)) set @location=charindex(@split,@str) set @length=1 while @location<>0 begin set @start=@location+1 set @location=charindex(@split,@str,@start) set @length=@length+1 end SET @ReturnValues = @length endGO
[解决办法]
这里有个函数可以给你参考一下,也是分字符串的
ALTER function [dbo].[f_split](@SourceSql varchar(8000),@StrSeprate varchar(10))returns @temp table(a varchar(100))--实现split功能 的函数--date :2005-4-20--Author :Dominoasbegindeclare @i intset @SourceSql=rtrim(ltrim(@SourceSql))set @i=charindex(@StrSeprate,@SourceSql)while @i>=1begininsert @temp values(left(@SourceSql,@i-1))set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)set @i=charindex(@StrSeprate,@SourceSql)endif @SourceSql<>'\'insert @temp values(@SourceSql)returnend