我需要有关以下方案的动态查询帮助。
我有一个过程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。
如果我让场景太复杂但我找不到更好的方法,我很抱歉。
问候。
答案 0 :(得分:0)
在过程B中,您需要使用实际的表名替换传递的字符串中的占位符。
您发布的伪代码有点乱码,但是过程A生成的字符串中的占位符似乎是'v_tablename'
,过程B中的实际表名保存在名为v_tablename
的变量中。既然如此,这对你有用:
mystr := replace(mystr, 'v_tablename', v_tablename);