Ich habe die folgende Split-Funktion, verwendet
CREATE FUNCTION dbo.Splitfn(@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
und i verwenden diese Funktion in einer Abfrage und es wurde
ALTER PROCEDURE [dbo].[Employees_Delete]
-- Add the parameters for the stored procedure here
@Id varchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
if exists(select Emp_Id from Employee where Emp_Id=dbo.Splitfn(@Id,','))
begin
update Employee set Is_Deleted=1 where Emp_Id=dbo.Splitfn(@Id,',')
select 'deleted' as message
end
END
ausgeführt, aber wenn ich meinen Speicher Prozedur geben Werte excute sagen (1,2) ich habe den Fehler
Ich habe meine tablevalued Funktionen überprüft die Funktion 'Splitfn' war da, aber ich weiß nicht, was schief läuft? Irgendwelche Vorschläge ..
@Rob es funktionierte für mich .. Wie man es in eine Inline TVF .. Plz Anleitung –
Es gibt viele Beispiele herum. Hier ist einer: http://sqlserverpedia.com/blog/sql-server-bloggers/splitting-a-delimited-string-part-1/ –
Danke für die Antwort. Ich hatte das gleiche Problem und ich konnte nicht für das Leben von mir herausfinden, was vor sich ging. Du hast mir große Kopfschmerzen erspart. – gsirianni