DS Stored Procedure阶段,不支持NVARCHAR类型定义

浏览: 2611

前言

关于对博客内容有疑问或者有好的建议,都可以在评论里面讨论。我会第一时间回复。谢谢


版本:IBM InfoSphere DataStage V11.3.1

操作系统:linux redhat 6.4

数据库版本:Oracle 11.2.0.4.0

技术说明:

技术说明(故障)

问题(摘要)

出现以下错误时, DataStage Stored Procedure阶段包含NVARCHAR类型的列:

消息: SP_SADRUPD, 0 :错误:数据类型当前不受支持

OR消息: SP_SADRUPD, 0 :发生错误的调用中PHCallActivePluginInitialize( )。
解决问题

当DataStage Stored Procedure阶段包含直栏定义为NVARCHAR数据类型,作业失败并带有以下警告和错误消息:

Type: Warning
消息标识: IIS-dstage-STP- 00082
消息: STP_stage, 0 :错误:数据类型当前不受支持

Type: Fatal
消息标识: IIS-dstage-TODC- 00017
消息: STP_stage, 0 :发生错误的调用中ORPHCallActivePluginInitialize( )。

NVARCHAR数据类型的不是当前支持的Stored Procedure阶段。 更改一个NVARCHAR列的类型为VARCHAR ,然后保存,编译,然后再次运行该作业。

数据构造

--建表语句
create table emp(
empno number(4,0),
ename varchar2(10),
job varchar2(9),
mgr number(4,0),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2,0)
);
加载数据:
insert into emp values (7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981', 'dd-mm-yyyy'), 5000, null, 10);
insert into emp values (7698, 'BLAKE', 'MANAGER', 7839, to_date('1-5-1981', 'dd-mm-yyyy'), 2850, null, 30);
insert into emp values (7782, 'CLARK', 'MANAGER', 7839, to_date('9-6-1981', 'dd-mm-yyyy'), 2450, null, 10);
insert into emp values (7566, 'JONES', 'MANAGER', 7839, to_date('2-4-1981', 'dd-mm-yyyy'), 2975, null, 20);
insert into emp values (7902, 'FORD', 'ANALYST', 7566, to_date('3-12-1981', 'dd-mm-yyyy'), 3000, null, 20);
insert into emp values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800, null, 20);
insert into emp values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-2-1981', 'dd-mm-yyyy'), 1600, 300, 30);
insert into emp values (7521, 'WARD', 'SALESMAN', 7698, to_date('22-2-1981', 'dd-mm-yyyy'), 1250, 500, 30);
insert into emp values (7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-9-1981', 'dd-mm-yyyy'), 1250, 1400, 30);
insert into emp values (7844, 'TURNER', 'SALESMAN', 7698, to_date('8-9-1981', 'dd-mm-yyyy'), 1500, 0, 30);
insert into emp values (7900, 'JAMES', 'CLERK', 7698, to_date('3-12-1981', 'dd-mm-yyyy'), 950, null, 30);
insert into emp values (7934, 'MILLER', 'CLERK', 7782, to_date('23-1-1982', 'dd-mm-yyyy'), 1300, null, 10);
COMMIT;


--创建存储过程
CREATE OR REPLACE PROCEDURE getSalaryByEmpNo(eNo IN NUMBER,
vENAME OUT nVARCHAR2) AS
BEGIN
SELECT ENAME INTO vENAME FROM EMP WHERE EMPNO = eNo;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;

开发作业

1.导入存储过程

Clipboard Image.png

2.输入参数

Clipboard Image.png

3.设定输出参数为Nvarchar型

Clipboard Image.png

4.运行作业

Clipboard Image.png

5.报错信息如下

Clipboard Image.png


6.将输出参数定义为Varchar型

Clipboard Image.png


总结:

Datastage    Stored Procedure阶段,不支持NVARCHAR类型定义,需要将其定义为VARCAHR 编译运行即可。

推荐 3
本文由 我是最优雅的杀手,不杀人专杀狗 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册