簡體   English   中英

如何在 Oracle 中使用插入語句執行動態 sql

[英]How to execute Dynamic sql with insert statement in Oracle

下面的sql命令在程序中不起作用

PROCEDURE P_EMPDETAIL

AS

V_WHERE := 'E.EMP_ID = 123'B

BEGIN
EXECUTE IMMEDIATE 'INSERT INTO EMPLOYEE E ' || V_WHERE || ;

END;

在我看來,您的語法和方法存在各種問題(您不應該以這種方式使用動態 SQL),也許您應該學習 PL/SQL 並參考手冊。 插入語句也是錯誤的。 下面是正確的語法。

CREATE OR REPLACE PROCEDURE P_EMPDETAIL as
V_WHERE varchar2(100);
BEGIN
    V_WHERE := 'E.EMP_ID = 123';
    EXECUTE IMMEDIATE 'INSERT INTO EMPLOYEE E (colname) values (1) ' || V_WHERE;
END;

好吧,不完全是那樣(顯然;否則,您不會尋求幫助)。

目前還不清楚你想做什么,因為語法真的很奇怪。 如果你想在表中插入一行,那么:

SQL> CREATE TABLE employees
  2  (
  3     emp_id   NUMBER
  4  );

Table created.

SQL> CREATE OR REPLACE PROCEDURE p_empdetail (par_emp_id IN NUMBER)
  2  AS
  3     l_str  VARCHAR2 (200);
  4  BEGIN
  5     l_str := 'insert into employees (emp_id) values (:1)';
  6
  7     EXECUTE IMMEDIATE l_str
  8        USING par_emp_id;
  9  END;
 10  /

Procedure created.

測試:

SQL> EXEC p_empdetail(123);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM employees;

    EMP_ID
----------
       123

SQL>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM