This query
from r in RightsToken
select new
{
Action = r.Action.PadRight(2, '0'),
}
generates this SQL
SELECT CASE WHEN CHAR_LENGTH("LPLA_1"."ACTION")>=2 THEN "LPLA_1"."ACTION" ELSE RPAD("LPLA_1"."ACTION",
2,
'0') END AS "Action"
FROM
"AQD"."EN_RIGHTS_TOKEN" "LPLA_1"
Giving an OracleException ORA-00904: "CHAR_LENGTH": invalid identifier.
Running the SQL directly and changing CHAR_LENGTH to LENGTH it works
SELECT CASE WHEN LENGTH("LPLA_1"."ACTION")>=2 THEN "LPLA_1"."ACTION" ELSE RPAD("LPLA_1"."ACTION",
2,
'0') END AS "Action"
FROM
"AQD"."EN_RIGHTS_TOKEN" "LPLA_1"
IOW CHAR_LENGTH is getting emitted instead of LENGTH
RuntimeBuild 5.5.1_NetFull
--------------------------------------------------------
-- DDL for Table EN_RIGHTS_TOKEN
--------------------------------------------------------
CREATE TABLE "AQD"."EN_RIGHTS_TOKEN"
( "RIGHTS_TOKEN_ID" NUMBER(10,0),
"ACTION" VARCHAR2(50 CHAR),
"OBJECT_ID" NUMBER(10,0) DEFAULT (0)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "AQD_DATA" ;