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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL CAST與CONVERT 函式的用法MySqlAST函式
- SQL中的cast()函式SQLAST函式
- oracle function函式castOracleFunction函式AST
- Oracle CAST函式不生效OracleAST函式
- 【原創】cast() 函式的用處AST函式
- Oracle的Cast的用法OracleAST
- oracle cast 用法OracleAST
- const_cast的用法AST
- Oracle中CAST函式使用簡介OracleAST函式
- SQL Server 2016 函式:CASTSQLServer函式AST
- ascii函式和substr函式的用法ASCII函式
- GetModuleFileName函式的用法函式
- createStyleSheet()函式的用法函式
- qsort函式的用法函式
- COALESCE函式的用法。函式
- C++ 中dynamic_cast<>的用法C++AST
- Instr函式的用法函式
- 【Oracle的NVL函式用法】Oracle函式
- fork()函式的基本用法函式
- Oracle dump函式的用法Oracle函式
- openat()函式的用法示例函式
- Oracle trunc()函式的用法Oracle函式
- Oracle 函式 Translate 的用法Oracle函式
- oracle的with函式用法示例Oracle函式
- Translate函式用法函式
- abs函式用法函式
- C++ RTTI中dynamic_cast的用法C++AST
- php函式案例PHP函式
- C語言中函式printf()和函式scanf()的用法C語言函式
- C++ 函式 realloc 的用法C++函式
- PostgreSQL>視窗函式的用法SQL函式
- string 函式的基本用法函式
- Excel函式的初級用法Excel函式
- mysql中replace函式的用法MySql函式
- Oracle to_date()函式的用法Oracle函式
- translate函式的靈活用法函式
- 關於lag函式的用法函式
- SQL LEN()函式用法SQL函式