2017-11-15 5 views
-1

変数 "slno"に値を代入しようとしていますが、これを使用してテーブル "Par_conn"に値を挿入します。プロシージャを実行している間にエラーを出しています。何か助けていただければ幸いです。 表変数に値を代入し、Oracleのprocで使用しようとしています

create table PAR_CONN 

    (
     CUSTOMER_ID NUMBER(10) not null, 
     CUSTOMER_NAME VARCHAR2(50) not null, 
     CITY   VARCHAR2(50) 
    ) 

ストア手順SP実行

CREATE OR REPLACE PROCEDURE sp_insert(CUSTOMER_NAME IN VARCHAR2,CITY IN VARCHAR2) 
IS  
    Declare slno number; 
BEGIN 
    select count(*) into slno from Par_conn;  
    insert into Par_conn values(slno,CUSTOMER_NAME,CITY); 
    commit; 
END; 

Begin 
    sp_insert('ramesh','dispur'); 
    end; 
+0

あなたの編集後にあなたの情報が追加されました。私はすでにあなたに下さった問題を推測します。それは動作していない – XING

答えて

0

構文が間違っています。下記のコメントinlineを参照してください。あなたが達成したいとは思っていませんが、最初に論理を実装する前にすべての構文修正を行う必要があります。

CREATE OR REPLACE PROCEDURE sp_insert (CUSTOMER_NAME IN VARCHAR2, 
             CITY   IN VARCHAR2) 
IS 
    ---Declare slno number; --<this is wrong way of declaration 
    slno NUMBER; 
BEGIN 
    SELECT COUNT (*) INTO slno FROM Par_conn; 

    INSERT INTO Par_conn 
     VALUES (slno, CUSTOMER_NAME, CITY); 

    COMMIT; 
END; 

ここで手順の作成方法を説明します。 Procedure

0

は、車輪の再発明しないでください。

おそらくを目的とした:

CREATE OR REPLACE PROCEDURE sp_insert(CUSTOMER_NAME IN VARCHAR2,CITY IN VARCHAR2) 
IS  
    slno number; 
BEGIN 
    select max(id_col_name)+1 into slno from Par_conn;  
    insert into Par_conn values(slno,CUSTOMER_NAME,CITY); 
    commit; 
END; 

id値を設定します。 SEQUENCEまたはIDENTITYを使用することを強くお勧めします。 はまた、あなたは常に列のリストを指定する必要があります。

insert into Par_conn(col1_name, col2_name, col3_name) 
values(slno,CUSTOMER_NAME,CITY); 
+0

シーケンスまたは権限アクセスを使用して制限されています。私はあなたのコードを試みたが、ストアprocdureを実行中に開始 sp_insert( 'ramesh'、 'dispur'); end;エラーDBPRODNEW.SP_INSERTが無効です。文は無視されます。 – micky

+0

上記のコードを修正しようとしましたが、次のエラーが発生しています。 "SP_INSERT"というシンボルが検出されました:=(@%; "SP_INSERT"の代わりにシンボル ":="を使用しました。 exec sp_insert( 'ramesh'、 'dispur'); end; – micky

+0

最初の場所では構文が間違っています。 – XING

関連する問題