Oracle DB链接到变量

时间:2015-10-01 09:40:33

标签: oracle variables procedure dblink

我有以下程序,我想根据数据库链接使我的选择查询动态化。所以我将数据库链接放入变量IN_DB_CONNECTION_NAME并在我的选择查询中提供,但我收到错误:

  

PL / SQL:ORA-00942:表或视图不存在。

我正在使用正确的sql查询从db_connection表获取数据库链接。 这是我的DB_CONNECTION表:

enter image description here

PROCEDURE "EXT_10004_SELF_SIGWF_CVB"(IN_KPI_DEF_ID IN NUMBER DEFAULT 0) AS

IN_EVENT_ID NUMBER;
IN_DB_CONNECTION_NAME VARCHAR2(100);

BEGIN

Select EVENT_ID INTO IN_EVENT_ID FROM RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION where KPI_DEF_ID = IN_KPI_DEF_ID;
Select DB.DB_LINK INTO IN_DB_CONNECTION_NAME FROM KPI_DEFINITION KD 
join DB_CONNECTION DB ON KD.DB_CONNECTION_ID = DB.DB_CONNECTION_ID
AND KD.KPI_DEF_ID = IN_KPI_DEF_ID;

Insert into TEMP_WF_WORKFLOW_EXTRACTION(ID,NAME,SUBSCRIPTION_ID)
Select DISTINCT(WF.ID),WF.NAME,WF.SUBSCRIPTION_ID
from WF_WORKFLOW@IN_DB_CONNECTION_NAME WF where
WF.STATUS_ID = 0 and WF.NAME IN ('CVB pack subscribe')

END EXT_10004_SELF_SIGWF_CVB;

1 个答案:

答案 0 :(得分:1)

类似

PROCEDURE "EXT_10004_SELF_SIGWF_CVB"(IN_KPI_DEF_ID IN NUMBER DEFAULT 0) AS

IN_EVENT_ID NUMBER;
IN_DB_CONNECTION_NAME VARCHAR2(100);
l_sql varchar2(500);
BEGIN

Select EVENT_ID INTO IN_EVENT_ID FROM    RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION where KPI_DEF_ID = IN_KPI_DEF_ID;
Select DB.DB_LINK INTO IN_DB_CONNECTION_NAME FROM KPI_DEFINITION KD 
join DB_CONNECTION DB ON KD.DB_CONNECTION_ID = DB.DB_CONNECTION_ID
AND KD.KPI_DEF_ID = IN_KPI_DEF_ID;

l_sql:= 'insert into...from WF_WORKFLOW@'||IN_DB_CONNECTION_NAME||' WF...';
/*    Insert into TEMP_WF_WORKFLOW_EXTRACTION(ID,NAME,SUBSCRIPTION_ID)
Select DISTINCT(WF.ID),WF.NAME,WF.SUBSCRIPTION_ID
from WF_WORKFLOW@IN_DB_CONNECTION_NAME WF where
WF.STATUS_ID = 0 and WF.NAME IN ('CVB pack subscribe') */


execute immediate l_sql;

END EXT_10004_SELF_SIGWF_CVB;