Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#22

AW: Was sind parametrisierte SQL-Statements und wann anwenden?

  Alt 6. Jun 2014, 13:31
Kann jemand noch ein bisschen aus der Praxis von konkreten Datenbanken erzählen? Ich könnte mir jetzt vorstellen, dass ein DMBS es beispielsweise erlauben würde, den Tabellennamen selbst zu paramatrisieren, ein anderes hingegen nicht. Gibt es da was?
Tabellennamen lassen sich normalerweise nur über Tricks parametrisieren. Und dann dient das auch nicht der Optimierung und die Implementierung ist datenbankabhängig:
Code:
declare @c cursor as
select name,
      case
      when substring(name,2,1) between '0' and '9' then 1990 + cast(substring(name,2,1) as SQL_INTEGER)       
      else 2000 + Ascii(substring(name,2,1)) - 65
      end as Jahr
from rechnungen;
open @c;
try
   drop table #temp;    
catch all
end try;
create table #temp (Name char(8), Id integer);
while fetch @c do
  execute immediate
    'insert into #temp (Name, Id, Umsatz) '+
   'select name, b.id'+
   'from rechnungen inner join '+
        -- Hier wird der Name der Tabelle aus zwei Feldern des erzeugten Cursors gebildet
        -- In der gejointen Tabelle steht das Feld Umsatz
   '(select top 1 * from ['+Trim(convert(@c.Jahr, SQL_CHAR))+'\'+Trim(@c.name)+']) B '+
   'on True '+
   'where rechnungen.name = '''+@c.name+''';';
end while;
close @c;
-- Rückgabe-Datenmenge
select * from #temp;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat