Hallo!
Ich bin gerade dabei bei uns in der Firma die Datenbank von FIrebird auf MSSSQL umzustellen. Nun habe ich aber Probleme bei einer gespeicherten Prozedur.
In Firebird sieht diese so aus:
SQL-Code:
declare variable num varchar(20);
declare variable rnr varchar(30);
declare variable cval varchar(5);
declare variable nu varchar(30); /*nullen */
declare variable i integer;
declare variable c integer;
begin
FOR SELECT MAX(BELEGNR) FROM ANGEBOTE WHERE ((BELEGNR BETWEEN :ANGEBOTYEAR || '00000' AND :ANGEBOTYEAR || '99999') AND (FIRMA=:FIRMAINT) AND (TYP=:ANBTYP))
INTO rnr DO
if (NOT rnr IS NULL) then
begin nu = '';
i = 5;
c = 0;
WHILE (i<10) DO BEGIN
cval=substr(rnr,i,i);
if (cval='0') then
begin /*if (c<5) then */
begin c = c + 1;
nu=nu || cval;
end
end
else i=11;
i= i + 1;
END
num = CAST(substr(rnr,3,7) AS INTEGER)+1;
ANGEBOTNR = CAST(num AS varchar(20));
end
else begin ANGEBOTNR=1;
end
Suspend;
end
Nun habe ich versucht dies auf
MSSQL umzustellen. Nur leider weiß ich nicht, wie ich die Zeile "(BELEGNR BETWEEN :ANGEBOTYEAR || '00000' AND :ANGEBOTYEAR || '99999')" in
MSSQL umzusetzten habe, da ich nicht weiß wie man "||" auf varchar in
MSSQL umsetzt.
Vielleicht könnt ihr mir ja helfen.
Danke