Ich möchte mehrere Abfragen in ODP.Net mit einer Select-Anweisung enden. Ich lösche, aktualisiere und wähle dann aus einer Tabelle aus.Ausführen mehrerer Abfragen in Oracle mit ODP.Net
Als Beispiel:
BEGIN
DELETE FROM StagingTable;
INSERT INTO StagingTable (Col1,Col2,Col3)
SELECT Value1,Value2,Value3
FROM MainTable;
UPDATE StagingTable
SET Col1 = FUNCTION(Col1);
END;
/
SELECT * FROM StagingTable;
Dies funktioniert in SQL Developer, aber nicht ODP.Net. Ich bekomme diese Fehlermeldung:
ORA-06550: line 26, column 1: PLS-00103: Encountered the symbol "/"
Aber wenn ich das entfernen/I erhalten:
ORA-06550: line 27, column 1: PLS-00103: Encountered the symbol "SELECT"
Ist das, was ich überhaupt möglich machen wollen? Ich möchte nicht ein Paket erstellen und damit anfangen, Typen zu erstellen. Idealerweise möchte ich dies über .Net tun.
Sie können es nicht so machen. Entweder legen Sie alles in einen gespeicherten Prozess und geben die Auswahl als Cursor zurück oder brechen in zwei Ausführungen auf. – OldProgrammer
Wie OldProgrammer vorschlägt, verwenden Sie die SQL * Plus-Syntax (den umgekehrten Schrägstrich), die für SQL Developer und ähnliche Tools geeignet ist, jedoch nicht für programmatische Schnittstellen. Sie können anonymes PLSQL von ODP.NET mit Bindevariablen aufrufen. Sie können das Ganze in einen anonymen PL/SQL-Block schreiben und am Ende an einen REF CURSOR binden. Dann hole es ab. –
Hier ist ein Beispielcode, der zeigt, wie man einen anonymen plsql-Block von odp.net aufruft und dann an einen ref-Cursor bindet: http://www.oracle.com/partners/campaign/o16odpnet-087852.html –