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

Peningkatan otomatis di Oracle dengan seq dan pemicu - pernyataan sql tidak valid

Saya menduga masalahnya adalah bahwa alat klien Anda membaca setiap titik koma sebagai akhir dari sebuah perintah, menyebabkan kode PL/SQL (yang memerlukan titik koma sebagai terminator pernyataan) salah dikirim ke server.

Saat Anda menghapus titik koma, pernyataan dikirim dengan benar ke server, tetapi Anda berakhir dengan objek yang tidak valid karena PL/SQL salah.

Saya menduplikasi masalah Anda di SQL Fiddle. Kemudian saya mengubah terminator pernyataan menjadi / bukannya ; dan mengubah kode untuk menggunakan garis miring untuk mengeksekusi setiap pernyataan, dan berhasil tanpa kesalahan:

CREATE TABLE proposals (
    proposal_id INT NOT NULL,
    target_audience VARCHAR2(50) NOT NULL,
    line_of_business VARCHAR2(50),
    activity_description VARCHAR2(250) NOT NULL,
    cost NUMBER(19, 4),
    comments VARCHAR2(250),
    objectives_and_results VARCHAR2(250),
    PRIMARY KEY (proposal_id)
)
/

CREATE SEQUENCE proposals_seq MINVALUE 1 
START WITH 1 INCREMENT BY 1 CACHE 10
/

CREATE OR REPLACE TRIGGER proposals_before_insert
BEFORE INSERT ON proposals FOR EACH ROW
BEGIN
    select proposals_seq.nextval into :new.proposal_id from dual;
END;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan OPENQUERY dengan database Oracle untuk menanyakan rentang tanggal

  2. pilih entri terbaru

  3. Bagaimana cara menggunakan Parameter Array/Tabel ke Oracle (ODP.NET 10g) melalui ADO.NET/C#?

  4. Bagaimana saya bisa mengunci satu baris di Oracle SQL

  5. Cabut Hak Istimewa di Oracle