Oracle
 sql >> база данни >  >> RDS >> Oracle

Операторът INSERT в PL/SQL е неуспешен в базата данни на Oracle

В PL/SQL можете да напишете INSERT изявление директно.

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

  INSERT   INTO tablename
         VALUES (tablevalue);
END;

Вашето изявление е неуспешно, защото това не е начинът DBMS_SQL.EXECUTE върши работа. Вижте документацията и примера:http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ

Според примера, даден в референтната документация, трябва да го направите по следния начин (първо подготвяте израза, след това свързвате променливата и след това я изпълнявате).

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;

След това го използвате така

 exec demo('something');

Надявам се да помогне




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да ограничите размера на набора от резултати за произволна заявка в Ingres?

  2. Как да определите схемите във файл за експортиране на Oracle Data Pump

  3. ORA-00933:SQL командата не е приключила правилно при изтриване на две таблици едновременно

  4. Фатално предупреждение на Maven:protocol_version

  5. Как да добавите индикатора AD/BC към дата в Oracle