Oracle
 sql >> Baza danych >  >> RDS >> Oracle

przekonwertuj na PROCEDURA pl/sql

Wszystko, co musisz zmienić, to DECLARE (wskazujący początek anonimowego bloku) do CREATE PROCEDURE , ze zmienną, którą aktualnie ustawiasz za pomocą zmiennej zastępczej jako argumentu formalnego; więc zamiast:

DECLARE
     veno  emp.empno%type:=&veno;
     vsal  emp.sal%type;
     vexp  number;
BEGIN
...
END;
/

Zrób to:

CREATE OR REPLACE PROCEDURE my_proc (veno IN emp.empno%type)
AS
     vsal  emp.sal%type;
     vexp  number;
BEGIN
...
END;
/

Następnie możesz wywołać to z anonimowego bloku lub w SQL*Plus lub SQL Developer za pomocą execute skrót:

set serveroutput on
execute my_proc(&veno);

W tym przykładzie nadal używana jest zmienna podstawiania, więc będziesz awansowany na wartość do użycia, ale możesz również przekazać liczbę bezpośrednio.

Przeczytaj więcej o tworzeniu procedur oraz typy parametry .

Mógłbyś trochę uprościć kod, aby zmniejszyć liczbę powtórzeń i ponownych zapytań; wyszukaj wyrażenia przypadku i klauzulę zwracającą. Ale to nie ma bezpośredniego znaczenia.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. <SQL>Jak zmienić rozmiar VARCHAR2 tabeli

  2. Wywołanie niezdefiniowanej funkcji oci_connect()

  3. Zapytanie Oracle SQL - generuj rekordy między dwiema datami

  4. Otwórz kursor dla dynamicznej nazwy tabeli w procedurze PL/SQL

  5. Oracle INSTR wstecz w Oracle SQL