Ich habe eine SAP-HANA-Prozeduren, um eine Tabelle zu aktualisieren. Ich versuche, eine dynamische SQL-Abfrage zu erstellen, dies ist mein Beispiel ist:Dynamische Update-Abfrage mit Parametern in SAP-HANA-Prozeduren
declare _field varchar(100) := 'NAME';
declare _name varchar(100) := 'david';
declare _id integer := 1;
DECLARE SQL_STR VARCHAR(3000);
SQL_STR := 'UPDATE "_SYS_BIC"."TEST_TABLE" SET "'||_field||'" = '||_name||' WHERE "ID" = '||:_id;
EXECUTE IMMEDIATE (:SQL_STR);
Aber in der Konsole Ich habe diesen Fehler:
Service exception: [260] invalid column name
Wie kann ich es beheben?
Während Sie den Syntaxfehler behoben haben, seien Sie sich bewusst, dass die Vorgehensweise, die Sie hier anwenden, wirklich "über" -flexibel ist und in SQL-Code von Programmierern verwendet wird, die in anderen Sprachen arbeiten. Zu den vielen Nachteilen dieses Ansatzes gehören: Code hat 'unsichtbare' Abhängigkeiten zu Ihrem Datenmodell, die Anweisungen können zur Kompilierzeit nicht überprüft werden, da die SQL-Injection stark verändert ist, wird der SQL-Cache durch einmalige Anweisungen überflutet. .. Erstellen Sie stattdessen spezifische Prozeduren, die für bestimmte Entitäten in Ihrer Datenbank gelten. –
Ich kenne das große Problem dieses Ansatzes, aber aus vielen Gründen muss ich in diesem Fall diesen Weg wählen. Vielen dank für Deine Hilfe! – Shiroga