Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

PLS-00103 Oracle kesalahan prosedur tersimpan

Kerangka dari deklarasi prosedur tersimpan adalah

CREATE OR REPLACE PROCEDURE procedure_name( <<parameters>> ) 
AS
  <<variable declarations>>
BEGIN
  <<code>>
END procedure_name;

Dalam kode yang Anda posting,

  1. Anda memasukkan BEGIN sebelum deklarasi variabel
  2. Anda memiliki DECLARE yang asing -- Anda hanya akan menggunakannya jika Anda mendeklarasikan blok PL/SQL yang tidak melibatkan CREATE .
  3. Anda kehilangan titik koma setelah RETURN pernyataan.
  4. Prosedur tidak dapat mengembalikan nilai. Jika Anda ingin mengembalikan 1 atau 0, Anda mungkin menginginkan fungsi, bukan prosedur. Jika Anda memerlukan prosedur, Anda dapat mendeklarasikan OUT parameter.
  5. Anda kehilangan THEN setelah IF

Sepertinya Anda menginginkan sesuatu seperti

CREATE OR REPLACE FUNCTION LIST_ACTIONS_CHECK_ADD 
(
  LISTNAME IN VARCHAR2  
) 
  RETURN NUMBER
AS 
 CNT NUMBER;
BEGIN
 SELECT COUNT(LIST_NAME) 
   INTO CNT 
   FROM LISTS_MASTER 
  WHERE LIST_NAME = LISTNAME;
 IF (CNT > 0)
 THEN
   RETURN 1;
 ELSE
   RETURN 0;
  END IF;
END LIST_ACTIONS_CHECK_ADD;

Perhatikan bahwa sebagai masalah umum, Anda biasanya lebih baik menggunakan semacam konvensi penamaan untuk memastikan bahwa parameter dan variabel lokal tidak berbagi nama kolom. Mencoba mencari tahu apakah LISTNAME adalah parameter atau nama kolom dan apa perbedaan antara LIST_NAME dan LISTNAME umumnya akan membingungkan programmer masa depan. Secara pribadi, saya menggunakan p_ awalan untuk parameter dan l_ awalan untuk variabel lokal. Saya juga menyarankan untuk menggunakan tipe berlabuh-- lists_master.list_name%type jika itu yang sedang diteruskan di

CREATE OR REPLACE FUNCTION LIST_ACTIONS_CHECK_ADD 
(
  P_LIST_NAME IN lists_master.list_name%type
) 
  RETURN NUMBER
AS 
 L_CNT NUMBER;
BEGIN
 SELECT COUNT(LIST_NAME) 
   INTO L_CNT 
   FROM LISTS_MASTER 
  WHERE LIST_NAME = P_LIST_NAME;
 IF (L_CNT > 0)
 THEN
   RETURN 1;
 ELSE
   RETURN 0;
  END IF;
END LIST_ACTIONS_CHECK_ADD;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengatur zona waktu sesi dengan spring jdbc Oracle

  2. Cara menemukan catatan dengan rentang tanggal yang tumpang tindih secara rekursif di Oracle DB

  3. Bagaimana Anda mendapatkan nilai berikutnya dalam urutan ke dalam variabel?

  4. Bagaimana cara membuat variabel secara dinamis dengan tipe data tabel?

  5. Oracle Julian hari tahun