Veröffentlicht 22. August 201015 j 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
22. August 201015 j Wenn du das Ergebnis dieser Subtraktion in einer Variablen speichern willst, solltest du es dieser Variablen auch zuweisen.
22. August 201015 j 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 201015 j von Visionar
22. August 201015 j 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));
23. August 201015 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.