【问题标题】:SSMS: Oracle Error Message: missing expressionSSMS:Oracle 错误消息:缺少表达式
【发布时间】:2017-10-10 18:57:35
【问题描述】:

我收到以下消息,但找不到问题所在。 我需要帮助来审查我的代码。

错误信息:

链接服务器“S”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息“ORA-00936:缺少表达式”。 消息 7321,第 16 级,状态 2,第 1 行

SELECT *
FROM OPENQUERY(S, 

'select 
d.Pay_Period_ID,
d.Start_Date,
d.End-Date,
l.LABORLEV2NM "Wrk Labor Acct",
l.LABORLEV2dsc "Wrk Cost Center",
l.LABORLEV2NM "Home Acct",
a.personnum ID,
A.LASTNM,
CASE WHEN INSTR(A.FIRSTNM,'''') > 0 THEN TRIM(SUBSTR(A.FIRSTNM,1,INSTR(A.FIRSTNM,''''))) ELSE A.FIRSTNM END firstnm, 
a.PERSONFULLNAME "EmployeeName", 
l.LABORLEV3NM "Job Desc",
bu.EXTERNAL_KEY "BU",
k.fte "FTE",
''Productive'' "Type", 
p.name "PayCode",
to_char(last_day(add_months( w.adjAPPLYDTM,-1))+1, ''MM/DD/YYYY'') "Month",
sum(w.DURATIONSECSQTY/60/60) "Hours",
d.hourly_rate "Fixed Hrly",  
'''' "Dollars",
CASE WHEN SUBSTR(l.LABORLEV2NM,1,3) = ''350'' THEN ''HMC'' 
WHEN SUBSTR(l.LABORLEV2NM,1,3) = ''351'' THEN ''HHH''
WHEN SUBSTR(l.LABORLEV2NM,1,3) = ''352'' THEN ''KAU''
END AS "Facility - Worked",
SUBSTR(l.LABORLEV2NM,4,4) "Worked Dept GL",
'''' "EMT",
CONCAT(''FY'',to_char(add_months(w.adjAPPLYDTM, 8 ), ''YY'' )) "FY"
--to_char(add_months(w.adjAPPLYDTM, 8 ), ''YY'' ) fiscal_year


from a, w, p,  l,  c, bu,  k,  d, b

where
w.paycodeid = p.paycodeid
and w.laboracctid = l.laboracctid
and c.Job_ID = b.Job_ID
and c.position_number = b.postion_number
and c.WFC_EMPLOYEE_ID = w.Employeeid
and b.payroll_id = d.payroll_id
and b.pay
and c.bu_id = bu.bu_id
and c.job_id = k.job_id
and d.llid = l.laboracctid
and a.personnum not like ''999%''
and a.personnum not like ''987%''
and w.employeeid = a.personid
and a.homelaborlevelnm1 in (''350'', ''351'', ''352'') 
and w.ADJAPPLYDTM >= TO_DATE(''08/01/2017'', ''MM/DD/YYYY'') 
and w.ADJAPPLYDTM < TO_DATE(''09/01/2017'', ''MM/DD/YYYY'') 
and p.name like ''CT%Earned%''
') AS CT_Table

【问题讨论】:

  • 我确实在'c'附近的 from 子句中看到了 2 个逗号
  • 谢谢。我添加了“bu”表
  • 尝试制作一个 really 简单的 SELECT * FROM table 语句并展开直到出现错误。我在顶部看到您的链接服务器“S”,这将是确保您的链接服务器实际设置正确并且问题不在查询本身的好方法。
  • openquery 语句有效。但是,当我添加时,d.hourly_rate 字段和 b.payroll_id = d.payroll_id 它不起作用。
  • 听起来像 b.payroll_id = d.payroll_id 表 b 和表 d 中缺少这些列

标签: oracle message openquery


【解决方案1】:

现在可以了。需要在“月”与“月”列的名称周围加上双引号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    相关资源
    最近更新 更多