Saklanan Oracle iki dönüş değeri elde etmek. Nasıl yapabilirim?nasıl Oracle Oracle SP den <strong>bir dönüş</strong> değer elde bilen Yordam
5
A
cevap
16
-- IN arguments : you get them. You can modify them locally but caller won't see it
-- IN OUT arguments: initialized by caller, already have a value, you can modify them and the caller will see it
-- OUT arguments: they're reinitialized by the procedure, the caller will see the final value.
CREATE PROCEDURE f (p IN NUMBER, x IN OUT NUMBER, y OUT NUMBER)
IS
BEGIN
x:=x * p;
y:=4 * p;
END;
/
SET SERVEROUTPUT ON
declare
foo number := 30;
bar number := 0;
begin
f(5,foo,bar);
dbms_output.put_line(foo || ' ' || bar);
end;
/
çıkışlar: 150 20
1
Dönüş değeri yerine OUTPUT parametrelerini kullanın.
7
orada bir prosedür teknik değil, ama ne iyi fonksiyonu - bir prosedür dönüş değeri yoktur ve kullanılamaz aradaki fark atama bildiriminin sağ tarafı olarak.
(1) parametreleri OUT kullanın:
Temelde iki seçenek vardır. Bu durumda iki OUT parametresiyle bir prosedür yapardım. Genelde insanlar, olağan beklentileri ihlal ettiği için OUT parametrelerine sahip olan işlevleri sevmezler. @ Benoit'in cevabı bu yöntemi göstermektedir.
(2) Birden çok değer içeren bir tür tanımlayın ve bunu işlevin dönüş türü olarak kullanın. Örnek:
CREATE TYPE two_values AS object (
A NUMBER,
b number
);
/
CREATE FUNCTION get_two_values RETURN two_values AS
BEGIN
RETURN two_values(2,4);
END;
/
-2
Sadece kullanıcı Benoit
ab=`sqlplus -s system/password << eof
SET SERVEROUTPUT ON
set pagesize 0;
set heading off;
set feedback off;
set linesize 5000;
set trimspool on;
declare
foo number := 30;
bar number := 0;
begin
f(5,foo,bar);
dbms_output.put_line(foo || ' ' || bar);
end;
/
eof`
echo $ab
İlgili konular
- 1. Oracle
- 2. Oracle
- 3. Saklı Yordam Prosedürünü Oracle SQL Developer'dan Yürütme
- 4. Oracle INSTR eğlencesi? Oracle
- 5. oracle
- 6. Veritabanı saklı bir yordam aracılığıyla Oracle saklı yordamı nasıl yürütülür
- 7. Oracle
- 8. Oracle
- 9. Oracle
- 10. Oracle
- 11. Oracle
- 12. oracle
- 13. Oracle
- 14. oracle
- 15. Oracle
- 16. Oracle
- 17. Oracle,
- 18. Oracle
- 19. Bir sıralamayı iletme - oracle sql
- 20. Oracle 9i
- 21. nasıl bu gibi kayıtlar var db benim Oracle Oracle
- 22. select (ORACLE)
- 23. Oracle Bir imlecin İYİLEŞTİRİLMESİ
- 24. Oracle sorguyu tanımlayan
- 25. Oracle neden dizgemi kullanıyor?
- 26. Oracle SQL - Bir karakteri
- 27. oracle pl/sql dizileri
- 28. Sp_getapplock, oracle
- 29. Oracle eklemek
- 30. Oracle SQL vs Oracle PL/SQL
"birden fazla" _horizontally_ (yani birden fazla alanın) ya da _vertically_ (çoklu satır) gelen yanıt modifiye aşağıdaki kodu deneyin? –
işlevleri yalnızca bir nesneyi döndürebilir. Ancak karmaşık bir türden olabilir ('' some_type '' TABLOSU). Ama belki prosedürleri kullanmak ister misiniz? – Benoit
SP'm iki değer döndürecek. Bu yüzden bu iki dönüş değerini SP'mden nasıl alacağımı bilmiyorum. – ppshein