参数i PL / SQL程序

时间:2016-11-09 09:51:29

标签: sql oracle stored-procedures plsql

我试图执行PL / SQL过程但没有成功。 它向我展示了“不存在的表”。我该怎么办?

-1

1 个答案:

答案 0 :(得分:0)

您可以尝试使用execute immediate语句并连接从procedure

传递的表名

参见oracle网站上的示例

CREATE OR REPLACE PROCEDURE delete_rows (
   table_name IN VARCHAR2,
   condition  IN VARCHAR2 DEFAULT NULL) AS
   where_clause  VARCHAR2(100) := ' WHERE ' || condition;
   v_table      VARCHAR2(30);
BEGIN
-- first make sure that the table actually exists; if not, raise an exception
  SELECT OBJECT_NAME INTO v_table FROM USER_OBJECTS
    WHERE OBJECT_NAME = UPPER(table_name) AND OBJECT_TYPE = 'TABLE';
   IF condition IS NULL THEN where_clause := NULL; END IF;
   EXECUTE IMMEDIATE 'DELETE FROM ' || v_table || where_clause;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE ('Invalid table: ' || table_name);
END;
/
BEGIN
  delete_rows('employees_temp', 'employee_id = 111');
END;
/

有关其他信息,请参阅oracle网站

execute immediate