2 Dicembre 2021
Expand search form

Possiamo usare la procedura nella dichiarazione select in Oracle?

Sto lavorando su una query (una SELECT) e ho bisogno di inserire il risultato di questa in una tabella. Prima di fare l’inserimento ho un controllo da fare, e se tutte le colonne sono valide, farò l’inserimento.

Il controllo viene fatto in una stored procedure. La stessa procedura è usata anche da qualche altra parte. Quindi sto pensando di usare la stessa procedura per fare i miei controlli.

La procedura fa i controlli e inserisce i valori è tutto OK.

Ho provato a chiamare la procedura all’interno della mia SELECT ma non funziona.

Questo tipo di codice non funziona.

Penso che possa essere fatto usando un cursore, ma vorrei evitare i cursori. Sto cercando la soluzione più semplice.

Qualcuno ha qualche idea?

3 Risposte 3

utilizzare un ciclo PL/SQL:

SQL può usare solo funzioni nella proiezione: ha bisogno di qualcosa che restituisca un valore. Quindi dovrete scrivere delle funzioni. Questa è la cattiva notizia. La buona notizia è che potete riutilizzare tutti gli investimenti nelle vostre stored procedure.

Ecco una procedura che applica una regola di business completamente giusta: solo i manager possono avere uno stipendio alto.

Poiché è una procedura non possiamo usarla in un’istruzione SELECT; abbiamo bisogno di avvolgerla in una funzione. Questa funzione chiama semplicemente la stored procedure. Restituisce il parametro di input P_SAL. In altre parole, se lo stipendio è valido (secondo le regole) sarà restituito. Altrimenti la funzione richiama l’eccezione della stored procedure.

La funzione deve restituire un valore che vogliamo inserire nella nostra tabella. Non può restituire una frase senza senso come “stipendio ok”. Inoltre, se vogliamo convalidare due colonne abbiamo bisogno di una funzione separata per ciascuna, anche se c’è una relazione tra loro e usiamo la stessa stored procedure per convalidarle entrambe. Un buon uso per la parola chiave DETERMINISTIC.

Ecco il test: gli idraulici non possono guadagnare 5000 spondine.

. ma i manager possono (perché se lo meritano):

Notate che l’eccezione lanciata è cruciale per questo lavoro. Non possiamo scrivere una bizzarra logica IF SALARY IS VALID THEN INSERT nel nostro statement SQL. Quindi, se la stored procedure non solleva un’eccezione, ma invece restituisce un qualche stato di errore debole, la funzione di wrapping dovrà interpretare l’output e lanciare la propria eccezione.

Potreste anche essere interessati agli argomenti

Possiamo usare l’istruzione SELECT nella stored procedure in Oracle?

Una stored procedure utilizza il meccanismo SELECT INTO per assegnare i valori corrispondenti ai parametri OUT.

Le procedure del database possono essere utilizzate nelle istruzioni SELECT SQL?

Le stored procedure e le query possono essere utilizzate per selezionare o inserire dati nel database, per aggregare dati, per denormalizzare o normalizzare i dati, o per eseguire qualsiasi altra funzione che richiede operazioni di database come input.

Come si esegue un’istruzione SELECT in una stored procedure Oracle?

execute pr_TestProc(‘select ID from STORES where EXPIRES <= sysdate'); La query passata dovrebbe essere eseguita come subquery all'interno della procedura. Qualcosa come: insert into CLOSED (ID, NAME, CITY) select ID, NAME, CITY from STORES where ID in (execute(subQuery));

Possiamo chiamare la procedura all’interno della funzione in Oracle?

Non è possibile eseguire una stored procedure all’interno di una funzione, perché una funzione non può modificare lo stato del database, mentre le stored procedure possono modificare lo stato del database.

Possiamo scrivere l’istruzione SELECT nella procedura?

Non è possibile chiamare una procedura in un’istruzione select, perché non restituisce nulla.

Possiamo scrivere un’istruzione SELECT in una stored procedure?

Quindi, è possibile scrivere una procedura che – inserisce nuovi dati, aggiorna o cancella quelli esistenti, recupera i dati utilizzando l’istruzione SELECT. E ancora meglio, è possibile combinare più (diverse dichiarazioni) nelle stored procedure. Inoltre, all’interno della procedura, è possibile chiamare un altro SP, una funzione, usare l’istruzione IF, ecc.

Perché non possiamo chiamare una stored procedure?

Non è possibile eseguire una stored procedure all’interno di una funzione, perché una funzione non può modificare lo stato del database, mentre le stored procedure possono modificare lo stato del database. Questo è per definizione (vedi CREATE FUNCTION – Limitazioni e restrizioni).

Posso usare una stored procedure in una funzione?

Secondo lo standard Microsoft, le stored procedure non possono essere eseguite all’interno della funzione, ma tecnicamente è possibile con alcune modifiche. Come fa un utente a richiedere di usare una procedura nella funzione?

Come si fa a SELEZIONARE una procedura in SQL?

In Object Explorer, connettetevi a un’istanza di SQL Server Database Engine, espandete quell’istanza e poi espandete Databases. Espandete il database che volete, espandete Programmabilità, e poi espandete Stored Procedures. Fai clic con il tasto destro del mouse sulla stored procedure definita dall’utente che desideri e fai clic su Execute Stored Procedure.

Qual è la differenza tra stored procedure e funzione?

Differenze di base tra Stored Procedure e Function in SQL Server. La funzione deve restituire un valore, ma nella Stored Procedure è opzionale. Anche una procedura può restituire zero o n valori. Le funzioni possono avere solo parametri di input mentre le procedure possono avere parametri di input o di output.

Possiamo scrivere un’istruzione select in una procedura?

Non si può chiamare una procedura in un’istruzione select, perché non restituisce nulla.

Possiamo scrivere un’istruzione select in una stored procedure?

Quindi, è possibile scrivere una procedura che – inserisce nuovi dati, aggiorna o cancella quelli esistenti, recupera i dati utilizzando l’istruzione SELECT. E ancora meglio, è possibile combinare più (diverse dichiarazioni) nelle stored procedure. Inoltre, all’interno della procedura, è possibile chiamare un altro SP, una funzione, usare l’istruzione IF, ecc.

Possiamo usare la funzione nella dichiarazione select?

Le funzioni funzionano solo con le istruzioni di selezione. Le funzioni possono essere usate ovunque in SQL, come AVG, COUNT, SUM, MIN, DATE e così via con le istruzioni select. Le funzioni compilano ogni volta. Le funzioni devono restituire un valore o un risultato.

Come si seleziona una stored procedure?

In Object Explorer, connettiti a un’istanza di SQL Server Database Engine, espandi l’istanza e poi espandi Databases. Espandere il database che si desidera, espandere Programmabilità, quindi espandere Stored Procedures. Fai clic con il tasto destro del mouse sulla stored procedure definita dall’utente che desideri e fai clic su Execute Stored Procedure.

Le stored procedure possono avere più dichiarazioni di selezione?

MySQL Stored Procedure con più istruzioni di selezione da tabelle diverse. Ma restituisce solo la prima selezione, poiché nel set di risultati contiene solo la colonna Vendite. Dovrai richiedere il set di risultati successivo usando la tua API.

Articolo precedente

Cosa devo indossare al colloquio con Comcast?

Articolo successivo

Quanti morfemi ci sono in Wanna?

You might be interested in …