到目前为止,在websphere IBM中错误的cast varchar

时间:2015-08-03 20:11:01

标签: java function plsql casting

我正在调用一个返回varchar2表的PL / SQL函数。这是它的签名:

CDC *pDC; //or use CClientDC, CPaintDC etc.
//do all drawings on pDC first
//pDC->TextOut(0,0,L"hello world")...

CRect rc;
GetClientRect(&rc);

CImage image;
image.Create(rc.Width(), rc.Height(), 32);

HDC imageHDC = image.GetDC(); 
::BitBlt(imageHDC, 0, 0, rc.Width(), rc.Height(), pDC->GetSafeHdc(), 0, 0, SRCCOPY);
image.Save(L"fileName.jpg", GUID_NULL);
image.ReleaseDC();

这是类型:

create or replace FUNCTION fn_get_estados
        (Pcuenta IN varchar2,Pdia_corte integer) 
        RETURN t_estado_disp_table 
AS

当我调用该函数时:

create or replace TYPE t_estado_Disp_type AS OBJECT 
     (date_inicial    VARCHAR2(15),
              date_final     VARCHAR2(15));

create or replace TYPE t_estado_detalle_table AS TABLE OF t_estado_detalle_type;
SQL Developer中的

结果如下:

2015年10月1日

但是当我使用部署在websphere 8.5.5中的Java Web应用程序中的确切SQL调用该函数时,select date_inicial,date_final from table( fn_get_estados( '0000268') ); 就像这样:

10-JAN-2015

我只是不希望app服务器进行任何投射。是否有任何配置可以避免这种投射?

1 个答案:

答案 0 :(得分:1)

Oracle日期类型为stored in a special format。每个客户决定如何显示它们;显示格式由客户端的NLS语言设置控制。 Find out more.

DD-MON-YYYY是Oracle的日期默认显示格式。所以app服务器没有进行任何转换,它只是以默认的Oracle方式呈现日期。

如果不进行彻底的影响分析,您可能不应该更改Websphere中的NLS设置。其他人可能对默认格式非常满意(除了其他任何东西,在全球环境中它消除了歧义:它是1月10日而不是10月1日)。