PL/SQL动态SQL

2 oracle conditional plsql cursor

我需要帮助.我在构建PL/SQL块时遇到问题.在游标中,我构建了一个查询,我想在游标上插入一个过滤器.以下是一个例子:

DECLARE 
code NUMBER;
parameters_amb myOthertable%ROWTYPE;

CURSOR test is SELECT id from mytable
 if parameters_amb.test2 is not null  then
    where mytable.name = 'NAMETABLE'
 else
    where mytable.name = 'NAMETABLE2';
Run Code Online (Sandbox Code Playgroud)

谁能协助我进行这种建设?

Kla*_*äck 5

您可以使用参数化游标:

DECLARE 
code NUMBER;
parameters_amb myOthertable%ROWTYPE;
param mytable.name%TYPE;

CURSOR test (p_name VARCHAR2) is 
  SELECT id 
    FROM mytable
   WHERE mytable.name = p_name;
BEGIN
  if parameters_amb.test2 is not null  then
    param := 'NAMETABLE'
  else
    param := 'NAMETABLE2';
  end if;

  OPEN test(param);

  -- Add code to fetch and read from cursor
END;
Run Code Online (Sandbox Code Playgroud)