2011-12-28 10 views
0

私はOracleを学習しており、初心者です。私の次のエラーを解決してください。Oracleストアドプロシージャエラーを解決してください。

create or replace 
PROCEDURE SP_SALE_SELECT 
(para1 OUT NVARCHAR2 
, para2 OUT NVARCHAR2 
, action IN NVARCHAR2 
) AS 
BEGIN 
    IF action = 1 then 
    Select * From VI_Sale; 
    Else if action = 2 then 
    Select * From VI_Sale 
    WHERE SaleID = para1; 
    Else if action = 3 then 
    Select * From VI_Sale 
    Where CustomerID = para1; 
    Else if action = 4 then 
    Select * From VI_Sale 
    where SaleID = para1 and CustomerID = para2; 
End if; 
END SP_SALE_SELECT; 

エラー(20,5):PLS-00103:あなたが代わりにELSEFIFELSE IF(なしスペースを使用

答えて

1

場合:以下のいずれかを期待シンボル "SP_SALE_SELECT" が発生しました)あなたが閉じる必要がある追加のifを作成しています。

create or replace 
PROCEDURE SP_SALE_SELECT 
(para1 OUT NVARCHAR2 
, para2 OUT NVARCHAR2 
, action IN NVARCHAR2 
) AS 
BEGIN 
    IF action = 1 THEN 
    Select * From VI_Sale; 
    ElSEIF action = 2 THEN 
    Select * From VI_Sale 
    WHERE SaleID = para1; 
    ElSEIF action = 3 THEN 
    Select * From VI_Sale 
    Where CustomerID = para1; 
    ELSEIF action = 4 then 
    Select * From VI_Sale 
    where SaleID = para1 and CustomerID = para2; 
End if; 
END; 
2

変更ELSIFにそれぞれElse if。また、PL/SQLブロック内の表から*を選択するだけでは、変数を選択する必要があります。例:

create or replace 
PROCEDURE SP_SALE_SELECT 
(para1 OUT NVARCHAR2 
, para2 OUT NVARCHAR2 
, action IN NVARCHAR2 
) AS 
v_col1 VI_Sale.col1%type; 
BEGIN 
    IF action = 1 then 
    Select col1 into v_col1 From VI_Sale; 
    Elsif action = 2 then 
    Select col1 into v_col1 From VI_Sale 
    WHERE SaleID = para1; 
    Elsif action = 3 then 
    Select col1 into v_col1 From VI_Sale 
    Where CustomerID = para1; 
    Elsif action = 4 then 
    Select col1 into v_col1 From VI_Sale 
    where SaleID = para1 and CustomerID = para2; 
End if; 
END SP_SALE_SELECT; 
+0

ありがとうございますジョン –

+0

v_col1 VI_Sale.col1%type; これは、1フィールドまたはすべてのフィールドを選択することですか? 1つ以上のフィールドを選択する場合は、選択方法を教えてください。 –

+0

これはちょうど1つの列を選択します.2つの場合、 'col1、col2 into v_col1、v_col2'などを選択します。 'v_col1 VI_Sale.col1%type;'行は、テーブルのcol1列と同じ型に変数を定義するだけです。 –

関連する問題