T-sql call-by-value

luigied

Mitglied
Hi Leute,

ich versuche im Moment in T-SQL eine Funktion zu implementieren, die mir Hexadezimal-Werte in Dezimal-Werte. Rein vom Algorithmus her ist das ja kein Problem,
aber wie zum Geier kann ich in T-SQL einer Variable den Wert einer anderen zuweisen.

Kurzes Bsp.:
SQL:
create procedure Test
as
declare @i varchar, @j varchar, @k varchar
SET @i = 'AF'
SET @j = @i
SET @k = substring(@j, 1, 1)
print @i
print @j
print @k

Wenn ich diese Prozedure ausführe, erhalte ichfolgende Ausgabe:


Weiss jemand, wie ich der Variablen j nur den Wert von und nicht die Referenz auf i gebe?

Mfg
 
Zuletzt bearbeitet:
Ok, das Problem ist behoben.

Es lag daran, dass keine Längen bei den Datentypen definiert waren.

Statt
SQL:
declare i varchar

sollte
SQL:
declare i varchar(2)

bzw. die gewünschte Länge verwendet werden.
Trotzdem würde mich noch interessieren, warum im 1. Fall alle 3 Variablen scheinbar auf den gleichen Speicherbereich zeigen.

Mfg
 
Zurück