Thema: Delphi Firebird -> MSSQL

Einzelnen Beitrag anzeigen

daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#1

Firebird -> MSSQL

  Alt 4. Jan 2010, 08:35
Datenbank: Firebird / MSSQL • Version: 2.0 / 2008 • Zugriff über: IB / ADO
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 || '00000AND :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
Lars
  Mit Zitat antworten Zitat