cast函式的用法案例
最近一開發人員在建立物化檢視的時候拋瞭如下的異常"ORA-01723: 不允許長度為 0 的列".語句如下:
create materialized view v_service
as
select '2' as SERVSOURCE,v1.companycode as icpcode,v1.CompanyName as spname,v1.ShortName as spshortname,'' as SERVIDALIAS,v2.ServiceCode as icpservid,v2.ProductName as servname,
v2.ProductStatus as servstatus,'' as ServAttr,'' as umflag,v2.ServiceType as servtype,'' as UsageDesc,'' as wwwurl,'' as introURL,v2.ChargeType as ChargeType,
v2.Fee as Price,v2.ChargeDesc,'' as StartTime,'' as EndTime,v2.Description as servdesc,
'' as csrtel,'' as spurl,ACCESSMODEID,null as FREEUSETYPE,'' as OFFLINEDESC,null as OFFLINESTATE,v2.OfflineDate as OFFLINETIME,
null as FREEUSECOUNT,-1 as ONDEMANDFLAG,null as SERVICELOGO,null as GROUPTYPE,'' as SERVGROUPID,'' as TYPE,null as SPECORDERFLAG,
'' as SPECORDERURL,'' as brand,'' as demoURL,-1 as SERVCATID,'' as freeurl,'1' as paymode,'' as linkurl,'' as linkservid,'1' as linkservsource,v1.companycode||'_'||v2.ServiceCode as pksid,v2.LUPDDate
from V_OM_Company v1,V_OM_PRODUCT v2
where v1.CompanyID = v2.ProviderCOID and v2.ProductStatus <> '1' and ACCESSMODEID = '10';
可以看到用了很多null as 和'' as從而導致出現列長度為0.
修改後的語句用到了函式cast,該函式的格式為cast(exp as
create materialized view v_service
as
select '2' as SERVSOURCE,v1.companycode as icpcode,v1.CompanyName as spname,v1.ShortName as spshortname,cast(null as varchar2(10)) as SERVIDALIAS,v2.ServiceCode as icpservid,v2.ProductName as servname,
v2.ProductStatus as servstatus,cast(null as varchar2(10)) as ServAttr,cast(null as varchar2(10)) as umflag,v2.ServiceType as servtype,cast(null as varchar2(10)) as UsageDesc,cast(null as varchar2(10)) as wwwurl,cast(null as varchar2(10)) as introURL,v2.ChargeType as ChargeType,
v2.Fee as Price,v2.ChargeDesc,cast(null as varchar2(10)) as StartTime,cast(null as varchar2(10)) as EndTime,v2.Description as servdesc,
cast(null as varchar2(10)) as csrtel,cast(null as varchar2(10)) as spurl,ACCESSMODEID,cast(null as varchar2(10)) as FREEUSETYPE,cast(null as varchar2(10)) as OFFLINEDESC,cast(null as varchar2(10)) as OFFLINESTATE,v2.OfflineDate as OFFLINETIME,
cast(null as varchar2(10)) as FREEUSECOUNT,-1 as ONDEMANDFLAG,cast(null as varchar2(10)) as SERVICELOGO,cast(null as varchar2(10)) as GROUPTYPE,cast(null as varchar2(10)) as SERVGROUPID,cast(null as varchar2(10)) as TYPE,cast(null as varchar2(10)) as SPECORDERFLAG,
cast(null as varchar2(10)) as SPECORDERURL,cast(null as varchar2(10)) as brand,cast(null as varchar2(10)) as demoURL,-1 as SERVCATID,cast(null as varchar2(10)) as freeurl,'1' as paymode,cast(null as varchar2(10)) as linkurl,cast(null as varchar2(10)) as linkservid,'1' as linkservsource,v1.companycode||'_'||v2.ServiceCode as pksid,v2.LUPDDate
from V_OM_Company v1,V_OM_PRODUCT v2
where v1.CompanyID = v2.ProviderCOID and v2.ProductStatus <> '1' and ACCESSMODEID = '10';
建立成功!
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/38542/viewspace-909694/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL中的cast()函式SQLAST函式
- SQL Server 2016 函式:CASTSQLServer函式AST
- GetModuleFileName函式的用法函式
- Instr函式的用法函式
- 【Oracle的NVL函式用法】Oracle函式
- string 函式的基本用法函式
- abs函式用法函式
- StretchBlt函式和BitBlt函式的區別和用法函式
- C語言中函式printf()和函式scanf()的用法C語言函式
- sys_context函式的用法Context函式
- python中zip()函式的用法Python函式
- PostgreSQL>視窗函式的用法SQL函式
- C++ 函式 realloc 的用法C++函式
- Excel函式的初級用法Excel函式
- Matlab中erf函式的用法Matlab函式
- Python range() 函式用法Python函式
- SSD-函式用法函式
- SQL LEN()函式用法SQL函式
- Python排序函式用法Python排序函式
- Python中的split()函式的用法Python函式
- C語言中qsort函式的用法C語言函式
- C語言函式sscanf()的用法C語言函式
- php array_filter() 函式的用法PHPFilter函式
- C — 快排函式 qsort 的用法函式
- 分割槽函式Partition By的基本用法函式
- python sorted()函式的引數用法Python函式
- python函式符號sympy的用法Python函式符號
- C++中函式呼叫的用法C++函式
- PHP 自定義函式用法及常用函式集合PHP函式
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- C++ replace() 函式用法C++函式
- fcntl函式用法詳解函式
- 粒子群最佳化函式--particleswarm函式的用法與討論函式Swarm
- C/C++中的new/delete、構造/解構函式、dynamic_cast分析C++delete函式AST
- C# List常用函式用法C#函式
- Python3 range() 函式用法Python函式
- abs(int)、fabs(double)函式用法函式
- SQL函式Group_concat用法SQL函式
- Lua——load和loadstring函式用法函式