Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Câu lệnh INSERT trong PL / SQL không thành công trong cơ sở dữ liệu Oracle

Trong PL / SQL, bạn có thể viết INSERT tuyên bố trực tiếp.

DECLARE
  tablevalue      varchar2(200);
BEGIN
  tablevalue := 'Hello World!';

  INSERT   INTO tablename
         VALUES (tablevalue);
END;

Câu lệnh của bạn không thành công vì đó không phải là cách DBMS_SQL.EXECUTE làm. Xem tài liệu và ví dụ: http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ

Theo ví dụ được đưa ra trong tài liệu tham khảo, bạn nên làm như thế này (đầu tiên bạn chuẩn bị câu lệnh, sau đó ràng buộc biến và sau đó chạy nó).

CREATE OR REPLACE PROCEDURE demo(tablevalue IN varchar2) AS
    cursor_name INTEGER;
    rows_processed INTEGER;
BEGIN
    cursor_name := dbms_sql.open_cursor;
    DBMS_SQL.PARSE(cursor_name, 'INSERT INTO tablename VALUES(:x)',
                   DBMS_SQL.NATIVE);
    DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', tablevalue);
    rows_processed := DBMS_SQL.EXECUTE(cursor_name);
    DBMS_SQL.CLOSE_CURSOR(cursor_name);
EXCEPTION
WHEN OTHERS THEN
    DBMS_SQL.CLOSE_CURSOR(cursor_name);
    raise;
END;

Bạn sử dụng nó sau đó như thế này

 exec demo('something');

Hy vọng nó sẽ hữu ích




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn vào Oracle và truy xuất ID trình tự đã tạo

  2. Lỗi khi chuyển đổi XML từ cột CLOB sang cột XMLType

  3. Xóa hàng con và hàng mẹ bằng một tập lệnh SQL

  4. Có tương đương với sp_getapplock, sp_releaseapplock trong oracle không

  5. Giải pháp cho ORA-00997:sử dụng bất hợp pháp kiểu dữ liệu LONG