Ich möchte viele SQL Anweisungen ausführen, aktuell sind diese Anweisungen alle in einer Datei mit Endung .sql gespeichert, zukünftig sollen sie in der Datenbank stehen.
Manuell sieht die Anweisung folgendermaßen aus:
declare @tSQL nvarchar(max)
set @tSQL = 'select * from openquery([PA_61_PRODUCTION_PAVAR], ''select AdressNr
, substring(BelegArt,1,3) as BelegArt
, substring(Firma,1,10) as Firma
, substring(Hausnummer,1,12) as Hausnummer
, substring(Name1,1,35) as Name1
, substring(Name2,1,35) as Name2
, substring(Name3,1,35) as Name3
, substring(Ort,1,30) as Ort
, substring(PLZ,1,10) as PLZ
, ReferenzNr
, substring(Staat,1,3) as Staat
, substring(Strasse,1,30) as Strasse
, substring(Typ,1,1) as Typ
, substring(V_BelegKopfAdr_Obj,1,60) as V_BelegKopfAdr_Obj
FROM PUB.V_BelegKopfAdr'')'
exec (@tSQL)
diese Anweisung wird fehlerfrei ausgeführt.
In der Tabelle in einem Attribut steht alles von 'select bis '')'
In der Prozedur habe ich eine Variable deklariert, in der ich den Inhalt aus dem Tabellenfeld zur weiteren Bearbeitung schreibe.
declare @UpdateProzedur nvarchar(max);
Das Auslesen und Aufrufen sieht wie folgt aus:
set @UpdateProzedur = (select [Befehl_Update] from [pA_61_Production_Sichten].[dbo].[Auslesetabellen] where Tabelle = @UpdateTabelle);
-- ausführen des Scriptes
if @UpdateTabelle = 'V_BelegKopfAdr'
execute(@UpdateProzedur);
if @UpdateTabelle = 'V_BelegKopfAdr'
print(@UpdateProzedur);
den Print Befehl habe ich eingebaut um eine Ausgabe zu bekommen, damit ich weiß, was ausgelesen worden ist.
Nach dem execute erhalte ich die folgende Meldung:
Meldung 102, Ebene 15, Status 1, Zeile 13
Falsche Syntax in der Nähe von "select * from openquery([PA_61_PRODUCTION_PAVAR], 'select AdressNr
, substring(BelegArt,1,3) as BelegArt
, substring(Fir".
'select * from openquery([PA_61_PRODUCTION_PAVAR], ''select AdressNr
, substring(BelegArt,1,3) as BelegArt
, substring(Firma,1,10) as Firma
, substring(Hausnummer,1,12) as Hausnummer
, substring(Name1,1,35) as Name1
, substring(Name2,1,35) as Name2
, substring(Name3,1,35) as Name3
, substring(Ort,1,30) as Ort
, substring(PLZ,1,10) as PLZ
, ReferenzNr
, substring(Staat,1,3) as Staat
, substring(Strasse,1,30) as Strasse
, substring(Typ,1,1) as Typ
, substring(V_BelegKopfAdr_Obj,1,60) as V_BelegKopfAdr_Obj
FROM PUB.V_BelegKopfAdr'')'
Ich weiß mir leider nicht mehr zu helfen und finde den Fehler nicht, wo ist der Unterschied, ob ich den SQL Text manuell in einer Variablen speichere, oder ich die Werte aus einem Attribut hole und in einer Variablen speichere zum Ausführen.
Vielleicht kann mir jemand hierbei helfen.