Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 почему в SQL2005 работает, а в SQL2000 нет  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
IF EXISTS(SELECT name FROM sysobjects WHERE name = 'ParseString' AND type = 'TF') 
  DROP FUNCTION ParseString
go 

CREATE FUNCTION dbo.ParseString (@nString varchar(4000), @cDelimiter char(1))
RETURNS @Temp TABLE 
(
	cResult varchar(4000)
)
AS
BEGIN
	DECLARE @nPos int

	set @nPos = CharIndex('%'+@cDelimiter+'%',@nString)
	if @nPos <> 0
	begin
		insert into @Temp(cResult) values(substring(@nString,0,@nPos))
		insert into @Temp(cResult) select cResult from dbo.ParseString(substring(@nString, @nPos+1,len(@nString)), @cDelimiter)		
	end
	else
	begin
		insert into @Temp(cResult) values(@nString)
	end
	return
END;
GO

выдает ошибку на этой строке
		insert into @Temp(cResult) select cResult from dbo.ParseString(substring(@nString, @nPos+1,len(@nString)), @cDelimiter)

Сообщение 102, уровень 15, состояние 1, процедура ParseString, строка 15
Incorrect syntax near '('.
9 июн 09, 17:49    [7282533]     Ответить | Цитировать Сообщить модератору
 Re: почему в SQL2005 работает, а в SQL2000 нет  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
Вот так работает.

CREATE FUNCTION dbo.ParseString (@nString varchar(4000), @cDelimiter char(1))
RETURNS @Temp TABLE 
(
	cResult varchar(4000)
)
AS
BEGIN
	DECLARE @nPos int, @substr varchar(4000)
	set @nPos = CharIndex(@cDelimiter,@nString)
	set @substr=substring(@nString, @nPos+1, len(@nString))
	if @nPos <> 0
	begin
		insert into @Temp(cResult) values(substring(@nString,0,@nPos))
		insert into @Temp(cResult) select cResult from dbo.ParseString(@substr, @cDelimiter)
	end
	else
	begin
		insert into @Temp(cResult) values(@nString)
	end
	return
END
GO
9 июн 09, 18:18    [7282719]     Ответить | Цитировать Сообщить модератору
 Re: почему в SQL2005 работает, а в SQL2000 нет  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
Сид,

капец.... а я голову ломаю... спасибо..
9 июн 09, 18:22    [7282738]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить