dynamiczny SQL to technika programowania, która umożliwia dynamiczne tworzenie poleceń SQL w czasie wykonywania. Możesz tworzyć bardziej uniwersalne, elastyczne aplikacje za pomocą dynamicznego SQL, ponieważ pełny tekst instrukcji SQL może być Nieznany podczas kompilacji. Na przykład dynamic SQL pozwala utworzyć procedurę, która działa na tabeli, której nazwa nie jest znana do czasu uruchomienia.,
Oracle zawiera dwa sposoby implementacji dynamicznego SQL w aplikacji PL/SQL:
- Native dynamic SQL, gdzie dynamiczne polecenia SQL umieszczane są bezpośrednio w blokach PL / SQL.
- wywołanie procedur w pakiecie
DBMS_SQL
.
Ten rozdział obejmuje następujące tematy:
- „czym jest dynamiczny SQL?”
- ” dlaczego warto używać dynamicznego SQL?,”
- „dynamiczny Scenariusz SQL wykorzystujący natywny dynamiczny SQL”
- „wybór pomiędzy natywnym dynamicznym SQL a pakietem DBMS_SQL”
- „używanie dynamicznego SQL w językach innych niż PL/SQL”
- „używanie rekordów PL/SQL w poleceniach SQL INSERT i UPDATE”
szczegóły dotyczące DBMS_SQL
można znaleźć w pliku DBMS_SQL
Oracle9i dostarczył Pakiety pl / sql i types Reference.
czym jest dynamiczny SQL?
Dynamic SQL umożliwia pisanie programów odwołujących się do poleceń SQL, których pełny tekst nie jest znany do czasu uruchomienia., Zanim szczegółowo omówimy dynamiczny SQL, jasna definicja statycznego SQL może stanowić dobry punkt wyjścia do zrozumienia dynamicznego SQL. Statyczne polecenia SQL nie zmieniają się z wykonania na wykonanie. Pełny tekst statycznych poleceń SQL jest znany podczas kompilacji, co zapewnia następujące korzyści:
- pomyślna kompilacja weryfikuje, czy polecenia SQL odwołują się do ważnych obiektów bazy danych.
- pomyślna kompilacja weryfikuje, czy istnieją niezbędne uprawnienia dostępu do obiektów bazy danych.,
- wydajność statycznego SQL jest generalnie lepsza niż dynamicznego SQL.
ze względu na te zalety, powinieneś używać dynamicznego SQL tylko wtedy, gdy nie możesz używać statycznego SQL do osiągnięcia swoich celów, lub jeśli używanie statycznego SQL jest uciążliwe w porównaniu do dynamicznego SQL. Jednak statyczny SQL ma ograniczenia, które można przezwyciężyć za pomocą dynamicznego SQL. Nie zawsze możesz znać pełny tekst poleceń SQL, które muszą być wykonane w procedurze PL / SQL., Twój program może akceptować dane wejściowe użytkownika, które definiują instrukcje SQL do wykonania, lub twój program może wymagać zakończenia pewnych prac przetwarzania, aby określić prawidłowy przebieg działania. W takich przypadkach należy użyć dynamicznego SQL.
na przykład aplikacja do raportowania w środowisku hurtowni danych może nie znać dokładnej nazwy tabeli przed uruchomieniem., Tabele te mogą być nazwane zgodnie z początkiem miesiąca i roku kwartału, na przykład INV_01_1997
, INV_04_1997
, INV_07_1997
, INV_10_1997
, INV_01_1998
I tak dalej. W aplikacji do raportowania można użyć dynamicznego SQL, aby określić nazwę tabeli w czasie wykonywania.
Możesz również uruchomić złożone zapytanie z wybraną przez użytkownika kolejnością sortowania., Zamiast kodowania zapytania dwa razy, z różnymi klauzulami ORDER BY
, można skonstruować zapytanie dynamicznie, aby zawierało określoną klauzulę ORDER BY
.
dynamiczne programy SQL mogą obsługiwać zmiany w definicjach danych, bez konieczności rekompilacji. To sprawia, że dynamiczny SQL jest znacznie bardziej elastyczny niż statyczny SQL. Dynamiczny SQL pozwala pisać kod wielokrotnego użytku, ponieważ SQL można łatwo dostosować do różnych środowisk..,
Dynamic SQL umożliwia również wykonywanie poleceń DDL (data definition language) i innych poleceń SQL, które nie są obsługiwane w czysto statycznych programach SQL.
po co używać dynamicznego SQL?
powinieneś używać dynamicznego SQL w przypadkach, gdy statyczny SQL nie obsługuje operacji, którą chcesz wykonać, lub w przypadkach, gdy nie znasz dokładnych instrukcji SQL, które muszą być wykonane przez procedurę PL / SQL. Te polecenia SQL mogą zależeć od danych wejściowych użytkownika lub mogą zależeć od pracy przetwarzania wykonanej przez program.,DL and SCL Statements in PL/SQL
In PL/SQL, you can only execute the following types of statements using dynamic SQL, rather than static SQL:
- Data definition language (DDL) statements, such as
CREATE
,DROP
,GRANT
, andREVOKE
- Session control language (SCL) statements, such as
ALTER
SESSION
andSET
ROLE
See Also:Oracle9i SQL Reference for information about DDL and SCL statements.,
ponadto możesz używać tylko klauzuliTABLE
w instrukcjiSELECT
za pomocą dynamicznego SQL. Na przykład następujący blok PL / SQL zawieraSELECT
oświadczenie, które używa klauzuliTABLE
I natywnego dynamicznego SQL:
wykonywanie zapytań dynamicznych
możesz użyć dynamicznego SQL do tworzenia aplikacji, które wykonują zapytania dynamiczne, których pełny tekst nie jest znany do czasu uruchomienia., Wiele typów aplikacji musi używać zapytań dynamicznych, w tym:
- aplikacje, które pozwalają użytkownikom na wprowadzanie lub wybieranie kryteriów wyszukiwania lub sortowania zapytań w czasie wykonywania
- aplikacje, które pozwalają użytkownikom na wprowadzanie lub wybieranie podpowiedzi optymalizatora w czasie wykonywania
- aplikacje, które odpytują bazę danych, w której definicje danych tabel stale się zmieniają
- aplikacje, które odpytują bazę danych, w której często tworzone są nowe tabele
przykłady można znaleźć w sekcji „Querying Using Dynamic SQL: Example” i zobacz przykłady zapytań w „dynamiczny scenariusz SQL przy użyciu natywnego dynamicznego SQL”.,
odwoływanie się do obiektów bazy danych, które nie istnieją podczas kompilacji
wiele typów aplikacji musi wchodzić w interakcje z danymi, które są generowane okresowo. Na przykład możesz znać definicje tabel podczas kompilacji, ale nie nazwy tabel.
dynamiczny SQL może rozwiązać ten problem, ponieważ pozwala poczekać do czasu uruchomienia, aby określić nazwy tabel. Na przykład w przykładowej aplikacji hurtowni danych omówionej w „czym jest dynamiczny SQL?”, nowe tabele są generowane co kwartał, a te tabele zawsze mają tę samą definicję., Możesz pozwolić użytkownikowi określić nazwę tabeli w czasie wykonywania za pomocą dynamicznego zapytania SQL, podobnego do następującego:
dynamiczna Optymalizacja wykonywania
dynamiczny SQL pozwala zbudować polecenie SQL w sposób, który optymalizuje wykonanie poprzez dynamiczne połączenie podpowiedzi w polecenie SQL. Umożliwia to zmianę podpowiedzi na podstawie bieżących statystyk bazy danych, bez konieczności rekompilacji.,
na przykład poniższa procedura używa zmiennej o nazwie a_hint
, aby umożliwić użytkownikom przekazanie opcji podpowiedzi do polecenia SELECT
:
w tym przykładzie użytkownik może przekazać dowolną z następujących wartości dla a_hint
:
a_hint = '/*+ ALL_ROWS */'
a_hint = '/*+ FIRST_ROWS */'
a_hint = '/*+ CHOOSE */'
lub inna ważna opcja podpowiedzi.
Oracle9i Przewodnik wydajności bazy danych i odniesienie, aby uzyskać więcej informacji na temat korzystania z podpowiedzi.,
wykonywanie dynamicznych bloków PL/SQL
możesz użyćEXECUTE
IMMEDIATE
do wykonywania anonimowych bloków PL / SQL. Możesz dodać elastyczność, konstruując Zawartość bloku w czasie wykonywania.
na przykład, załóżmy, że chcesz napisać aplikację, która pobiera numer zdarzenia i wysyła go do obsługi zdarzenia. Nazwa programu obsługi ma postać EVENT_HANDLER_
event_num, gdzie event_num jest numerem zdarzenia., Jedną z metod jest zaimplementowanie dispatcher jako instrukcji switch, gdzie kod obsługuje każde zdarzenie poprzez statyczne wywołanie odpowiedniej procedury obsługi. Ten kod nie jest zbyt rozszerzalny, ponieważ kod dyspozytora musi być aktualizowany za każdym razem, gdy zostanie dodany moduł obsługi nowego zdarzenia.,
korzystając z natywnego dynamicznego SQL, możesz napisać mniejszy, bardziej elastyczny dyspozytor zdarzeń podobny do następującego:
wykonywanie dynamicznych operacji przy użyciu praw Invokera
korzystając z funkcji invoker-rights z dynamicznym SQL, możesz tworzyć aplikacje, które wydają dynamiczne instrukcje SQL zgodnie z uprawnieniami i schematem wywoływacza. Te dwie funkcje, invoker-rights i dynamic SQL, umożliwiają tworzenie podkomponentów aplikacji wielokrotnego użytku, które mogą działać i uzyskać dostęp do danych i modułów wywoływacza.,
Zobacz także:
PL/SQL User ' s Guide and Reference, aby uzyskać informacje na temat korzystania z invokers-rights i natywnego dynamicznego SQL.,
dynamiczny Scenariusz SQL przy użyciu natywnego dynamicznego SQL
Ten scenariusz pokazuje, jak wykonać następujące operacje przy użyciu natywnego dynamicznego SQL:
- wykonywanie operacji DDL i DML
- wykonywanie zapytań jednorzędowych i wielorzędowych
baza danych w tym scenariuszu jest bazą danych zasobów ludzkich firmy (o nazwiehr
) z następującym modelem danych:
tabela główna o nazwieoffices
zawiera listę wszystkich lokalizacji firmy., Tabelaoffices
ma następującą definicję:
Column Name Null? Type LOCATION NOT_NULL VARCHAR2(200)
wieleemp_
tabele lokalizacji zawierają informacje o pracownikach, gdzie lokalizacja jest nazwą miasta, w którym znajduje się biuro. Na przykład tabela o nazwie emp_houston
zawiera informacje o pracownikach dla Biura firmy w Houston, podczas gdy tabela o nazwie emp_boston
zawiera informacje o pracownikach dla Biura firmy w Bostonie.,
każdaemp_
tabela lokalizacji ma następującą definicję:
poniższe sekcje opisują różne natywne dynamiczne operacje SQL, które mogą być wykonywane na danych w bazie danychhr
.
przykładowa operacja DML przy użyciu natywnego dynamicznego SQL
następująca natywna dynamiczna procedura SQL daje podniesienie do wszystkich pracowników o określonym stanowisku:
przykładowa operacja DDL przy użyciu natywnego dynamicznego SQL
EXECUTE IMMEDIATE
może wykonywać operacje DDL., Na przykład, następująca procedura dodaje lokalizację biura:
następująca procedura usuwa lokalizację biura:
przykładowe zapytanie Jednorzędowe przy użyciu natywnego dynamicznego SQL
EXECUTE
IMMEDIATE
może wykonywać dynamiczne zapytania jednorzędowe. Zmienne bind można określić w klauzuli USING
I pobrać wynikowy wiersz do celu określonego w klauzuliINTO
instrukcji.,
następująca funkcja pobiera liczbę pracowników w danej lokalizacji wykonujących określone zadanie:
przykładowe zapytanie Wielowierszowe przy użyciu natywnego dynamicznego SQL
OPEN-FOR
, FETCH
I CLOSE
mogą wykonywać dynamiczne zapytania Wielowierszowe zapytania wiersza., Na przykład, poniższa procedura wyświetla listę wszystkich pracowników z określonym zadaniem w określonej lokalizacji:
wybór pomiędzy natywnym dynamicznym SQL a pakietem DBMS_SQL
Oracle udostępnia dwie metody używania dynamicznego SQL w PL/SQL: natywny dynamiczny SQL oraz pakietDBMS_SQL
. Natywny dynamiczny SQL umożliwia umieszczanie dynamicznych poleceń SQL bezpośrednio w kodzie PL/SQL. Te dynamiczne instrukcje obejmują instrukcje DML( w tym zapytania), anonimowe bloki PL/SQL, instrukcje DDL, instrukcje kontroli transakcji i instrukcje kontroli sesji.,
To process most native dynamic SQL statements, you use the EXECUTE
IMMEDIATE
statement. To process a multi-row query (SELECT
statement), you use OPEN-FOR
, FETCH
, and CLOSE
statements.
Note:
To use native dynamic SQL, the COMPATIBLE
initialization parameter must be set to 8.1.0 or higher. See Oracle9i Database Migration for more information about the COMPATIBLE
parameter.,
pakietDBMS_SQL
jest biblioteką PL / SQL, która oferuje API do dynamicznego wykonywania poleceń SQL. PakietDBMS_SQL
zawiera procedury otwierania kursora, parsowania kursora, dostarczania wiązań i tak dalej. Programy używające pakietu DBMS_SQL
wykonują wywołania do tego pakietu w celu wykonywania dynamicznych operacji SQL.
poniższe sekcje zawierają szczegółowe informacje o zaletach obu metod.,
Patrz także:
the Pl/Sql User ' s Guide and Reference, aby uzyskać szczegółowe informacje na temat używania natywnego dynamicznego SQL i dostarczanych przez Oracle9i pakietów PL/SQL i referencji typów, aby uzyskać szczegółowe informacje na temat używania pakietuDBMS_SQL
. W PL/SQL User ' s Guide i Reference natywny dynamiczny SQL jest określany po prostu jako dynamiczny SQL.,
zalety natywnego dynamicznego SQL
natywny dynamiczny SQL zapewnia następujące zalety w porównaniu z pakietemDBMS_SQL
:
natywny dynamiczny SQL jest łatwy w użyciu
ponieważ natywny dynamiczny SQL jest zintegrowany z SQL, możesz go używać w taki sam sposób, w jaki używasz statycznego SQL w kodzie PL / SQL. Natywny dynamiczny kod SQL jest zwykle bardziej zwarty i czytelny niż odpowiedni kod, który używa pakietu DBMS_SQL
.,
z pakietem DBMS_SQL
musisz wywoływać wiele procedur i funkcji w ścisłej kolejności, dzięki czemu nawet proste operacje wymagają dużej ilości kodu. Możesz uniknąć tej złożoności, używając zamiast tego natywnego dynamicznego SQL.
tabela 8-1 ilustruje różnicę w ilości kodu wymaganego do wykonania tej samej operacji za pomocą pakietuDBMS_SQL
I natywnego dynamicznego SQL.,
tabela 8-1 porównanie kodu pakietu DBMS_SQL i natywnego dynamicznego SQL
natywny dynamiczny SQL jest szybszy niż DBMS_SQL
natywny dynamiczny SQL w PL/SQL działa porównywalnie do wydajności statycznego SQL, ponieważ interpreter PL / SQL ma wbudowaną obsługę. Programy używające natywnego dynamicznego SQL są znacznie szybsze niż programy używające pakietu DBMS_SQL
. Zazwyczaj natywne dynamiczne polecenia SQL działają od 1,5 do 3 razy lepiej niż równoważne DBMS_SQL
. (Wzrost wydajności może się różnić w zależności od aplikacji.,)
natywny dynamiczny SQL łączy kroki przygotowania, wiązania i wykonywania instrukcji w jedną operację, co minimalizuje kopiowanie danych i narzut wywołania procedury i poprawia wydajność.
pakietDBMS_SQL
jest oparty na proceduralnym API i wywołuje wysokie wywołania procedur i kopie danych. Za każdym razem, gdy bindujesz zmienną, pakietDBMS_SQL
kopiuje zmienną PL / SQL bind do jej przestrzeni do użycia podczas wykonywania., Za każdym razem, gdy wykonujesz pobieranie, dane są kopiowane do przestrzeni zarządzanej przez pakiet DBMS_SQL
, a następnie pobrane dane są kopiowane, po jednej kolumnie na raz, do odpowiednich zmiennych PL / SQL, co powoduje znaczne obciążenie.
Wskazówka dotycząca wydajności: używanie zmiennych Bind
podczas korzystania z natywnego dynamicznego pakietu SQL lub pakietuDBMS_SQL
można poprawić wydajność za pomocą zmiennych bind, ponieważ zmienne bind umożliwiają Oracle współdzielenie jednego kursora dla wielu poleceń SQL.,
na przykład następujący natywny dynamiczny kod SQL nie używa zmiennych bind:
dla każdej odrębnej zmiennej my_deptno
tworzony jest nowy kursor, co powoduje niezgodność zasobów i słabą wydajność. Zamiast tego bind my_deptno
jako zmienna bind:
tutaj ten sam kursor jest ponownie używany dla różnych wartości bindmy_deptno
, poprawiając wydajność i skalowalność.,
natywny dynamiczny SQL obsługuje typy zdefiniowane przez użytkownika
natywny dynamiczny SQL obsługuje wszystkie typy obsługiwane przez statyczny SQL w PL/SQL, w tym typy zdefiniowane przez użytkownika, takie jak zdefiniowane przez użytkownika Obiekty, kolekcje iREFs
. Pakiet DBMS_SQL
nie obsługuje tych typów zdefiniowanych przez użytkownika.
Uwaga:
pakietDBMS_SQL
zapewnia ograniczoną obsługę tablic. Zobacz Oracle9i dostarczone Pakiety PL/SQL i typy odniesienia dla informacji.,
natywny dynamiczny SQL obsługuje pobieranie do rekordów
natywny dynamiczny SQL i statyczny SQL obsługują pobieranie do rekordów, ale pakietDBMS_SQL
nie. W natywnym dynamicznym SQL wiersze wynikające z zapytania mogą być bezpośrednio pobierane do rekordów PL/SQL.,
w poniższym przykładzie wiersze z zapytania są pobierane do rekordu emp_rec
:
zalety pakietu DBMS_SQL
pakiet DBMS_SQL
zapewnia następujące zalety w stosunku do natywnego dynamicznego SQL:
DBMS_SQL jest obsługiwany w kliencie-programy po stronie klienta
pakiet DBMS_SQL
jest obsługiwany w programach po stronie klienta, ale natywny dynamiczny SQL nie jest., Każde wywołanie pakietu DBMS_SQL
z programu po stronie klienta tłumaczy się na zdalne wywołanie procedury PL/SQL (RPC); te wywołania występują, gdy trzeba powiązać zmienną, zdefiniować zmienną lub wykonać instrukcję.
DBMS_SQL obsługuje description
DESCRIBE_COLUMNS
procedura w pakiecieDBMS_SQL
może być używana do opisu kolumn kursora otwartego i przetwarzanego przezDBMS_SQL
. Ta funkcja jest podobna do polecenia DESCRIBE
w SQL*Plus., Natywny dynamiczny SQL nie posiada obiektu DESCRIBE
.
DBMS_SQL obsługuje aktualizacje wielu wierszy i usuwa z klauzulą zwracającą
pakietDBMS_SQL
obsługuje instrukcje z klauzuląRETURNING
, które aktualizują lub usuwają wiele wierszy. Natywny dynamiczny SQL obsługuje tylko klauzulę RETURNING
, jeśli zwracany jest pojedynczy wiersz.,
See Also:
„Performing DML with RETURNING Clause Using Dynamic SQL: Example” for examples of DBMS_SQL
package code and native dynamic SQL code that uses a RETURNING
clause.
DBMS_SQL Supports SQL Statements Larger than 32KB
The DBMS_SQL
package supports SQL statements larger than 32KB; native dynamic SQL does not.
DBMS_SQL Lets You Reuse SQL Statements
The PARSE
procedure in the DBMS_SQL
package parses a SQL statement once., Po pierwszym przetworzeniu instrukcji można użyć wielokrotnie z różnymi zestawami argumentów bind.
Native dynamic SQL przygotowuje polecenie SQL za każdym razem, gdy jest ono używane, co zwykle obejmuje parsowanie, optymalizację i generowanie planów. Chociaż dodatkowe operacje prepare wiążą się z niewielką karą za wydajność, spowolnienie jest zwykle przeważane przez korzyści wydajnościowe natywnego dynamicznego SQL.,
przykłady kodu pakietu DBMS_SQL i natywnego dynamicznego kodu SQL
poniższe przykłady ilustrują różnice w kodzie niezbędne do wykonania operacji za pomocą DBMS_SQL
oraz natywnego dynamicznego kodu SQL. W szczególności przedstawiono następujące przykłady:
- zapytanie
- operacja DML
- operacja zwracająca DML
ogólnie rzecz biorąc, natywny dynamiczny kod SQL jest bardziej czytelny i zwarty, co może poprawić wydajność programistów.,
zapytania przy użyciu Dynamicznego SQL: przykład
poniższy przykład zawiera dynamiczną instrukcję zapytania z jedną zmienną bind (:jobname
) I dwiema wybranymi kolumnami (ename
I sal
):
stmt_str := 'SELECT ename, sal FROM emp WHERE job = :jobname';
Ten przykład zapytania dla pracowników z opisem stanowiska SALESMAN
w job
kolumna emp
tabeli. Tabela 8-2 pokazuje przykładowy kod, który wykonuje to zapytanie za pomocą pakietu DBMS_SQL
I natywnego dynamicznego SQL.,
Table 8-2 Querying Using the DBMS_SQL Package and Native Dynamic SQL
Performing DML Using Dynamic SQL: Example
poniższy przykład zawiera dynamiczną INSERT
instrukcję dla tabeli z trzema kolumnami:
stmt_str := 'INSERT INTO dept_new VALUES (:deptno, :dname, :loc)';
Ten przykład wstawia nowy wiersz, dla którego wartości kolumn są w zmiennych PL/SQL deptnumber
, deptname
I location
. Tabela 8-3 pokazuje przykładowy kod, który wykonuje tę operację DML przy użyciu pakietu DBMS_SQL
I natywnego dynamicznego SQL.,
tabela 8-3 operacja DML przy użyciu pakietu DBMS_SQL i natywnego dynamicznego SQL
Wykonywanie DML z klauzulą zwracającą przy użyciu Dynamicznego SQL: przykład
poniższy przykład używa dynamicznego UPDATE
do aktualizacji lokalizacji działu, a następnie zwraca nazwę działu:
stmt_str := 'UPDATE dept_new SET loc = :newloc WHERE deptno = :deptno RETURNING dname INTO :dname';
tabela 8-4 pokazuje przykładowy kod, który wykonuje tę operację, używając zarówno pakietu DBMS_SQL
, jak i natywnego dynamicznego SQL.,
tabela 8-4 DML zwracanie operacji przy użyciu pakietu DBMS_SQL i natywnego dynamicznego SQL
używanie dynamicznego SQL w językach innych niż PL/SQL
chociaż ten rozdział omawia obsługę dynamicznego SQL PL/SQL, możesz wywołać dynamiczny SQL z innych języków:
- Jeśli używasz C/C++, możesz wywołać dynamiczny SQL za pomocą Oracle Call Interface (OCI), lub możesz użyć precompilera Pro*C/C++ aby dodać dynamiczne rozszerzenia SQL do kodu C.
- Jeśli używasz COBOL, możesz użyć prekompilatora Pro * COBOL, aby dodać dynamiczne rozszerzenia SQL do kodu COBOL.,
- Jeśli używasz Javy, możesz tworzyć aplikacje, które używają dynamicznego SQL z JDBC.
Jeśli masz aplikację, która używa OCI, Pro * C / C++ lub pro*COBOL do uruchamiania dynamicznego SQL, powinieneś rozważyć przejście na natywny dynamiczny SQL wewnątrz procedur i funkcji przechowywanych w PL / SQL. Round-trips sieci wymagane do wykonywania dynamicznych operacji SQL z aplikacji po stronie klienta może zaszkodzić wydajności. Procedury przechowywane mogą znajdować się na serwerze, eliminując obciążenie sieci., Procedury i funkcje przechowywane w PL/SQL można wywoływać z aplikacji OCI, Pro*C/C++ lub pro*COBOL.,br>Zobacz także:
aby uzyskać informacje na temat wywoływania procedur składowanych Oracle i funkcji składowanych z różnych języków, zobacz:
- Oracle Call Interface Programmer 's Guide
- Pro*C/C++ Precompiler Programmer' s Guide
- Pro*COBOL Precompiler Programmer 's Guide
- Oracle9i Java Stored Procedures Developer' s Guide
Korzystanie z rekordów PL/SQL w SQL INSERT i polecenia update
chociaż można wyliczyć każde pole rekordu PL/SQL podczas wstawiania lub aktualizowania wierszy w tabeli, wynikowy kod nie jest szczególnie czytelny ani możliwy do utrzymania., Zamiast tego możesz używać rekordów PL / SQL bezpośrednio w tych instrukcjach. Najwygodniejszą techniką jest zadeklarowanie rekordu przy użyciu atrybutu % ROWTYPE, tak aby miał dokładnie te same pola Co tabela SQL.
chociaż ta technika pomaga zintegrować zmienne PL / SQL i typy ściślej z instrukcjami SQL DML, nie można używać rekordów PL/SQL jako zmiennych bind w dynamicznych instrukcjach SQL.
Dodaj komentarz