【发布时间】:2014-04-29 16:54:47
【问题描述】:
我想显示一个游标变量的值,它是在连接 2 个字符串后得出的。
下面是我正在使用的代码。我得到的输出为 810 和 current_row.ORGN_CNSL_CD。我希望两个输出中的输出都是 810。
DECLARE
temp varchar2(50);
TYPE myARRAY is varray(20) of varchar2(60);
TYPE myAssoARRAY is TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(15);
DimensionKeys myARRAY := myARRAY('OrgnConfig','OrgnField','OrgnPstbl',
'OrgnBData','FundConfig','FundField',
'FundPstbl','FundBData');
DimensionValues myAssoARRAY;
CURSOR c_dist_perf_sumry IS
SELECT DISTINCT
PERFORMANCE_SUMMARY_STAGING.ORGN_CNSL_CD,
PERFORMANCE_SUMMARY_STAGING.FUND_CNSL_CD,
PERFORMANCE_SUMMARY_STAGING.ACTY_CNSL_CD,
PERFORMANCE_SUMMARY_STAGING.USERDM1_CNSL_CD
FROm PERFORMANCE_SUMMARY_STAGING
WHERE
ROWNUM=1;
BEGIN
DimensionValues('OrgnConfig') := 'ORGN_CNSL_SLCN_CD';
DimensionValues('OrgnField') := 'ORGN_CNSL_CD';
DimensionValues('OrgnPstbl') := 'PBLE_ORGN.ID';
DimensionValues('OrgnBData') := 'BDATA.BF_ORGN_ID';
DimensionValues('FundConfig') := 'FUND_CNSL_SLCN_CD';
DimensionValues('FundField') := 'FUND_CNSL_CD';
DimensionValues('FundPstbl') := 'PBLE_FUND.ID';
DimensionValues('FundBData') := 'BDATA.BF_FUND_ID';
FOR current_row IN c_dist_perf_sumry
LOOP
FOR i IN 1..8
LOOP
if MOD(I,4) = 1 THEN
temp := 'current_row' || '.' || DimensionValues(DimensionKeys(i+1));
DBMS_OUTPUT.PUT_LINE(current_row.ORGN_CNSL_CD);
DBMS_OUTPUT.PUT_LINE(temp);
END IF;
END LOOP;
END LOOP;
END;
/
set serveroutput on
810
current_row.ORGN_CNSL_CD
810
current_row.FUND_CNSL_CD
【问题讨论】:
-
如果您想按名称访问游标列,可以在这里查看:stackoverflow.com/questions/10321571/…
标签: string oracle plsql cursor