2010-01-22 32 views
7

Tôi có một thủ tục được lưu trữ trong oracle và muốn kiểm tra nó từ SQLPlus.Làm thế nào để thực hiện thủ tục lưu sẵn từ SQL Plus?

Nếu tôi sử dụng

execute my_stored_proc (-1,2,0.01) 

tôi nhận được lỗi này

PLS-00306: wrong number or types of arguments in call to my_stored_proc 

Sự khởi đầu cho proc là này

create or replace PROCEDURE my_stored_proc 
(a IN NUMBER, 
    b IN NUMBER, 
    c IN NUMBER, 
    z out NUMBER 
) AS .... 

Tôi cần phải cung cấp một var cho ra tham số, là như thế nào? Tôi cố gắng:

var z NUMBER; 

Nhưng nhận được lỗi này khi tôi cố gắng chạy proc

execute my_stored_proc (-1,2,0.01,z) 
PLS-00201: identifier 'Z' must be declared 

Ngoài ra khi tôi còn ở SQL Developer nó đã cho tôi sử dụng và nó hiển thị các đầu vào theo thứ tự ngược, đó là:

execute my_stored_proc(z number,c number,b number,a number); 

bạn có cung cấp chúng theo thứ tự ngược lại hoặc là chỉ một cái gì đó với SQL Developer

Tôi đã không viết thủ tục và tôi không bình thường đối phó với họ vì vậy tôi có thể thiếu một cái gì đó hiển nhiên.

Cảm ơn

Trả lời

14

Bạn có hai lựa chọn, một/block SQL PL hoặc SQL * Plus ràng buộc biến:

var z number 

execute my_stored_proc (-1,2,0.01,:z) 

print z 
-1

Bạn đã quên đặt z như là một biến ràng buộc.

Sau đây EXECUTE lệnh chạy một tuyên bố PL/SQL tham chiếu đến một thủ tục lưu trữ:

SQL> EXECUTE - 
> :Z := EMP_SALE.HIRE('JACK','MANAGER','JONES',2990,'SALES') 

Lưu ý rằng giá trị được trả về bởi các thủ tục lưu trữ đang được trở lại thành: Z

+3

-1 một chức năng có thể được sử dụng trong một biểu thức, một thủ tục không thể. –

Các vấn đề liên quan