SQL2k8 R2 Übergabe varchar an SP mit führendem Doppelkreuz scheitert
An eine gespeicherte Prozedur werden verschiedene Parameter übergeben, u.a. eine Tabellenbezeichnung. Wenn dieser Parameter mit ## beginnt gibt es ein Problem.
ALTER Procedure P_XYZ
(
@zahlodertext char(1),
@db_name varchar(26),
@tabname varchar(66),
@rückInfo varchar(666) OUTPUT
)
AS
...
SET @rückinfo = @tabname
RETURN
Sobald die Variable @tabname mit dem Doppelkreuz beginnt (z.B. '##T_ABC') geschieht - ja was eigentlich ?
Wenn ich @tabname über @rückinfo auswerte, gibt die SP den Wert der Variablen zurück (T_ABC etc.). Gleiches mit ##T_ABC und es erfolgt keine oder eine leere Rückgabe. Es werden im konkreten Anwendungsfall noch mehr Parameter übergeben, aber das sollte wohl keine Rolle spielen.
Was ist hier falsch ?
Dank an die Experten.
Viele Grüße von
PCFJKG
ALTER Procedure P_XYZ
(
@zahlodertext char(1),
@db_name varchar(26),
@tabname varchar(66),
@rückInfo varchar(666) OUTPUT
)
AS
...
SET @rückinfo = @tabname
RETURN
Sobald die Variable @tabname mit dem Doppelkreuz beginnt (z.B. '##T_ABC') geschieht - ja was eigentlich ?
Wenn ich @tabname über @rückinfo auswerte, gibt die SP den Wert der Variablen zurück (T_ABC etc.). Gleiches mit ##T_ABC und es erfolgt keine oder eine leere Rückgabe. Es werden im konkreten Anwendungsfall noch mehr Parameter übergeben, aber das sollte wohl keine Rolle spielen.
Was ist hier falsch ?
Dank an die Experten.
Viele Grüße von
PCFJKG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186835
Url: https://administrator.de/contentid/186835
Ausgedruckt am: 24.11.2024 um 04:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
kenne mich mit dem MS SQL zwar nicht aus aber vielleicht hilft ja folgende Seite.
http://msdn.microsoft.com/de-de/library/ms175874.aspx
Gruß Jörg
kenne mich mit dem MS SQL zwar nicht aus aber vielleicht hilft ja folgende Seite.
http://msdn.microsoft.com/de-de/library/ms175874.aspx
Gruß Jörg
Bei näherer Betrachtung handelt es sich ja garnicht um einen Bezeichner sondern um den Inhalt einer Variablen. Könnte es sein, dass bei der Verwendung des Variableninhalts den '#'ern irgendwie ein '/' oder dergleichen vorangestellt werden muss um eine richtige Interpretation zu erreiche.
Bei Oracle muss ich z.B.
mitteilen, dass der Unterstrich mittels '\' ein Zeichen ist und nicht der Platzhalter für ein beliebiges Zeichen.
Gruß Jörg
Bei Oracle muss ich z.B.
SELECT last_name
FROM employees
WHERE last_name LIKE '%A\_B%' ESCAPE '\';
mitteilen, dass der Unterstrich mittels '\' ein Zeichen ist und nicht der Platzhalter für ein beliebiges Zeichen.
Gruß Jörg