Menyimpan prosedur baru di SQLDeveloper

Jika kita membuat prosedur baru menggunakan Oracle SQL Developer, misalkan TESTPROC

CREATE OR REPLACE PROCEDURE TESTPROC AS 
BEGIN
 --SOMETHING
END TESTPROC;

dan simpan saja menggunakan CTRL+S dan jangan dijalankan, apakah tidak akan disimpan sebagai prosedur? jika kita menutup jendela dan mencoba mencarinya di daftar prosedur, kita tidak dapat menemukannya?

Apakah kita perlu menjalankan proc setidaknya sekali untuk menyimpannya?

Adakah cara untuk mengambil kembali prosedur yang hilang dengan cara ini?


person user2093576    schedule 10.11.2015    source sumber
comment
coba cari di daftar prosedur... maksudmu mencarinya di sistem tabel Oracle?   -  person Moudiz    schedule 10.11.2015
comment
Anda harus mengkompilasi prosedur untuk menyimpannya di disk. Periode.   -  person Lalit Kumar B    schedule 10.11.2015


Jawaban (4)


coba cari di daftar prosedur

kueri ini memberi tahu Anda apakah prosedur Anda ada di database Anda

select * from user_procedures where object_name ='THE NAME OF YOUR PROC'

Or

select * from user_objects where object_type ='PROCEDURE' and OBJECT_NAME='THE NAME OF YOUR PROC'

untuk mengatasi kesalahan object already exists tambahkan or replace dalam prosedur Anda seperti ini

create or replace procedure Proc_test ...

person Moudiz    schedule 10.11.2015
comment
Untuk menambahkan lebih banyak... Untuk prosedur yang berdiri sendiri gunakan object_name dan untuk prosedur yang dibungkus dalam paket gunakan procedure_name. Lihat stackoverflow.com /pertanyaan/28672956/ - person Lalit Kumar B; 10.11.2015

CTRL+S - Anda menyimpan file. Anda dapat menemukan file ini di OS Anda.

Untuk menyimpan prosedur di DB Anda harus membuatnya di DB. Untuk ini, Anda perlu menjalankan CREATE PROCEDURE. Jadi tidak, Anda tidak "menyimpannya" di DB.

person Tatiana    schedule 10.11.2015
comment
ketika saya mencoba membuat prosedur baru dengan nama yang sama, saya mendapatkan kesalahan objek sudah ada. Tetapi tidak dapat menemukannya jika saya memfilter prosedur dengan nama yang sama. Bagaimana cara mengambil yang sudah ada? - person user2093576; 10.11.2015
comment
gunakan tombol segarkan di pengembang SQL - person Tatiana; 10.11.2015

Pengembang PLSQL atau klien lainnya hanyalah alat bagi Anda untuk berkomunikasi dengan database itu sendiri. Anda mungkin menggunakan Toad, sql* atau antarmuka lainnya, dan semuanya mungkin memiliki caranya sendiri dalam melakukan sesuatu.

Apa yang Anda sebut berjalan, sebenarnya disebut kompilasi. Saat Anda "menjalankan" pernyataan yang Anda berikan, pernyataan itu hanya dikompilasi berdasarkan database yang terhubung dengan Anda. Itu hanya dapat benar-benar berjalan, jika Anda memanggil prosedur yang Anda kompilasi dari blok PLSQL.

Cobalah untuk memahami perbedaan antara server database dan IDE, maka Anda akan lebih nyaman bekerja dengan Oracle.

person Erkan Haspulat    schedule 10.11.2015
comment
ketika saya mencoba membuat prosedur baru dengan nama yang sama, saya mendapatkan kesalahan objek sudah ada. Tetapi tidak dapat menemukannya jika saya memfilter prosedur dengan nama yang sama. Bagaimana cara mengambil yang sudah ada? - person user2093576; 10.11.2015
comment
@ user2093576 Gunakan CREATE OR REPLACE agar Anda tidak mendapatkan kesalahan objek sudah ada. - person Lalit Kumar B; 10.11.2015

simpan saja menggunakan CTRL+S dan jangan dijalankan, apakah tidak akan disimpan sebagai prosedur?

Oracle SQL Developer adalah IDE dan BUKAN server database. Ini menyediakan antarmuka untuk berinteraksi dengan database. CTRL + S adalah pintasan OS Windows dan tidak ada hubungannya dengan database Oracle.

Anda harus mengkompilasi prosedur untuk menyimpannya ke dalam disk.

Anda berkata,

ketika saya mencoba membuat prosedur baru dengan nama yang sama, saya mendapatkan kesalahan objek sudah ada

Itu karena Anda tidak menggunakan kata kunci REPLACE untuk mengganti objek yang ada.

Mari kita lihat alasannya:

SQL> CREATE PROCEDURE foo
  2  AS
  3  BEGIN
  4    NULL;
  5  END;
  6  /

Procedure created.

SQL> CREATE PROCEDURE foo
  2  AS
  3  BEGIN
  4    NULL;
  5  END;
  6  /
CREATE PROCEDURE foo
                 *
ERROR at line 1:
ORA-00955: name is already used by an existing object

Cara menghindarinya: Gunakan CREATE OR REPLACE

SQL> CREATE OR REPLACE PROCEDURE foo
  2  AS
  3  BEGIN
  4    NULL;
  5  END;
  6  /

Procedure created.

Untuk melihat apakah prosedur yang dikompilasi ada dalam database, kueri tampilan [DBA|ALL|USERS]_PROCEDURES.

Ada dua hal:

  • Prosedur yang berdiri sendiri - gunakan object_name sebagai filter
SELECT owner,
  object_name,
  procedure_name,
  object_type
FROM all_procedures
WHERE owner    ='OWNER'
AND object_name='PROC_NAME';
  • Prosedur terpaket - gunakan procedure_name sebagai filter
SELECT owner,
  object_name,
  procedure_name,
  object_type
FROM all_procedures
WHERE owner    ='OWNER'
AND procedure_name='PROC_NAME';
person Lalit Kumar B    schedule 10.11.2015
comment
Terima kasih atas penjelasan mendetailnya. Sangat menghargai itu. - person user2093576; 11.11.2015