Visionar Geschrieben 22. August 2010 Teilen Geschrieben 22. August 2010 Morgen, das ist mein e zweite Stored Procedure, die ich geschrieben habe. Also nicht meckern. So hab den Cursor-Krempel rausgenommen. Möchte den Systen_User (z.B. domänicus\userus) und einen benutzer mit dem namen userus, der in einer tabelle auf redundanz prüfen. Dafür möchte ich also beim System_User das "domänicus\ " loswerden . Wie man sieht benutze ich Stringfkt. wie Len, Right und CharIndex Klappt auch alles wunderbar, nur die Subtraktion (rot markiert) klappt nicht. Da kommt immer 0 raus, obwohl 10hätte rauskommen sollen @SystemUserLaenge ist gleich 17 und @Slashposition=7 Also wird subtrahiert man die Werte ???? *wahnsinnig werdend* Das sind alles int-Datentypen DECLARE @MyCursor CURSOR DECLARE @Agentur nvarchar(50) DECLARE @SystemUser nvarchar(50) DECLARE @Slashposition int DECLARE @SystemUserLaenge int DECLARE @NTName varchar(30) DECLARE @NTNameLaenge int Set @SystemUser = System_User Set @SystemUserLaenge = 1; Select LEN(@SystemUser) print @SystemUserLaenge Set @Slashposition = 1; SELECT CHARINDEX('\', @SystemUser) print @Slashposition Set @NTNameLaenge = 1; [COLOR="Red"]@SystemUserLaenge - @Slashposition[/COLOR] print @NTNameLaenge Set @NTName = 1; SELECT RIGHT(@SystemUser, @NTNameLaenge) print @NTName Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 22. August 2010 Teilen Geschrieben 22. August 2010 Wenn du das Ergebnis dieser Subtraktion in einer Variablen speichern willst, solltest du es dieser Variablen auch zuweisen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Visionar Geschrieben 22. August 2010 Autor Teilen Geschrieben 22. August 2010 (bearbeitet) das macht man doch so Set @NTNameLaenge = 1; @SystemUserLaenge - @Slashposition Set @NTNameLaenge = @SystemUserLaenge - @Slashpositio so klappts, aber auch nicht und so auch nicht SUBSTRING (@SystemUser, @Slashposition + 1, @SystemUserLaenge), wegen Falsche Syntax in der Nähe von 'SUBSTRING'. Liegt an dem befehl habs ausprobiert, aber so stimmt die syntax .. Bearbeitet 22. August 2010 von Visionar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Visionar Geschrieben 22. August 2010 Autor Teilen Geschrieben 22. August 2010 ok hier die lösung leute. vllt. brauch das irgendwann einer sind echt sperrlich infos zu finden, konnte fast 2stunden rumprobieren :eek DECLARE @MyCursor CURSOR; DECLARE @Agentur nvarchar(50); DECLARE @SystemUser nvarChar(50); DECLARE @NTName nvarchar(30); DECLARE @Slashposition as int; DECLARE @SystemUserLaenge as int; DECLARE @NTNameLaenge as int; DECLARE @EintragVoranden as bit; Set @EintragVoranden = 0; Set @SystemUser = System_User; Set @SystemUserLaenge = (Select LEN(@SystemUser)); Set @Slashposition = (SELECT CHARINDEX('\', @SystemUser)); Set @NTName = (SELECT SUBSTRING(@SystemUser, @Slashposition+1 , @SystemUserLaenge-@Slashposition)); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 23. August 2010 Teilen Geschrieben 23. August 2010 Das ist etwas sehr umständlich was du da machst. Set @SystemUserLaenge = (Select LEN(@SystemUser)); Wo du das her hast würd mich dann aber doch intressieren..... set @SystemUserLaenge = LEN(@SystemUser) funktioniert wunderbar. Das ganze was du da oben in 5 Variablen zuweisungen machst mal in kurz : SET @ntname = SUBSTRING( SYSTEM_USER, CHARINDEX('\', SYSTEM_USER) + 1, LEN(SYSTEM_USER) ) Was den 3. Parameter von substring angeht : SUBSTRING (Transact-SQL) Abschnitt length_expression Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.