sql >> Databáze >  >> RDS >> Oracle

Příkaz INSERT v PL/SQL selže v databázi Oracle

V PL/SQL můžete napsat INSERT přímo.

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

  INSERT   INTO tablename
         VALUES (tablevalue);
END;

Váš příkaz selže, protože to není způsob DBMS_SQL.EXECUTE funguje. Podívejte se na dokumentaci a příklad:http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ

Podle příkladu uvedeného v referenční dokumentaci byste to měli udělat takto (nejprve připravíte příkaz, poté svážete proměnnou a poté ji spustíte).

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;

Pak jej použijete takto

 exec demo('something');

Doufám, že to pomůže




  1. SQL 'AND' nebo 'OR' je na prvním místě?

  2. Jak získat hodnotu ze základu tabulky na Preference

  3. Server MySQL-Wamp po upgradu win10 nefunguje

  4. VB.NET mySQL příkaz insert