我需要有关以下场景的动态查询帮助。
我有一个过程 A,其中我将一个字符串存储在一个输出变量中,该变量将传递给过程 B。
过程 B 也接收 tablename 作为输入参数,但过程 A 没有,但是过程 A 也使用 tablename 变量。
我正在考虑如何在过程 A 字符串中使用 tablename 变量,这样当字符串传递给过程 B 时,它的 tablename 输入变量值被分配给过程 A 字符串中的 tablename 变量。
我将尝试用一些代码示例来解释。这是一个示例,没有实际代码。
proc A
begin
--- string that uses tablename but has no variable input for tablename.
mystr:='AND DAY_OF_WEEK_ID IN (SELECT B.DAY_ID FROM DAY_OF_WEEK B
INNER JOIN CD.' || 'v_tableName' || ' CD
ON TRIM(TO_CHAR(TO_TIMESTAMP(CD.GMT_SEIZ_DT_TIME,''YYYYMMDDHH24MISS''), ''DAY'')) = B.NAME WHERE B.DAY_ID IN (1,7))';
end;
proc B
(v_tablename, mystr)
begin
mystr2:= 'insert into sometable
select ' || mystr || ' from ' || v_tablename
end;
因此 mystr 字符串已经包含 tablename 变量,我希望为其分配与过程 B 的变量 v_table_name 相同的值。
如果我使场景过于复杂,但我找不到更好的方法,我深表歉意。
问候。
在过程 B 中,您需要将传递的字符串中的占位符替换为实际的表名。
您发布的伪代码有点乱,但过程 A 生成的字符串中的占位符似乎是'v_tablename'
,而过程 B 中的实际表名保存在名为v_tablename
. 在这种情况下,这对您有用:
mystr := replace(mystr, 'v_tablename', v_tablename);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句