Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird -> MSSQL (https://www.delphipraxis.net/145548-firebird-mssql.html)

daywalker9 4. Jan 2010 08:35

Datenbank: Firebird / MSSQL • Version: 2.0 / 2008 • Zugriff über: IB / ADO

Firebird -> MSSQL
 
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

hoika 4. Jan 2010 09:23

Re: Firebird -> MSSQL
 
Hallo,

einfach ein + (Plus) nehmen.

Gefunden hier (unter B)
1


Heiko

Jürgen Thomas 4. Jan 2010 09:28

Re: Firebird -> MSSQL
 
Hallo,

ich weiß wenig über MS-SQL, aber soviel habe ich bei meiner Arbeit an [wikibooks] Einführung in SQL gelernt:

String-Verknüpfung geht über das Plus-Zeichen.

Namen von Parametern und lokalen Variablen müssen immer mit '@' beginnen. Input- und Output-Parameter werden gemeinsam im Kopf deklariert, lokale Variable innerhalb des Rumpfes.

Ich befürchte, du wirst beim Zugriff auf Daten innerhalb der SP noch auf erhebliche Probleme stoßen. Da habe ich im Wikibook unter "SQL-Programmierung" noch erhebliche MS-Lücken.

Gruß Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz