日期:2014-05-16  浏览次数:21301 次

asp执行oracle update语句问题
asp执行 oracle update语句老报以下错误,sql语句在PLSQL里执行是没问题。错误如下:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14' 

[Microsoft][ODBC driver for Oracle]语法错误或违反访问规则 

/TCRM/Modules/Finace/DoSettle.asp,行 46 

代码如下:

<!--#include file="./../../Common/OraAdmInc.asp"-->
<%
Dim SID,StartDate,EndDate,OrganID,strSQL,strSQL1
SID = Request("ReportID")

 set rs=createobject("adodb.recordset")
Set rs = OpenDBr("select * from finreport where ReportID="&SID&"")
If Not rs.eof Then
StartDate = Rs("StartDate")
 EndDate = Rs("EndDate") 
OrganID =Rs("OrganID") 
End If
rs.close
 
Dim DoRs
strSQL1 = "update finreport set state = 2 where ReportID="&SID&""
 If SID <> "" Then

Set DoRs = OpenDBr("select * from finreport Where ReportID="&SID&"")
If Not DoRs.Eof Then
  DoRs("state")=2
DoRs.Update
  End If
DoRs.Close

 strSQL = "update sale_group_order_insr set [money_status]='已缴款',[money_date]=to_date(to_char(sysdate,'yyyy-mm-ddhh24miss'),'yyyy-mm-ddhh24miss') where [money_status] is null and TO_CHAR (Buy_date, 'YYYY-MM-DD')>='"&StartDate&"' and TO_CHAR (Buy_date, 'YYYY-MM-DD')<='"&EndDate&"' and ins_owner_id=" & OrganID&""
  OraConn.Excute(strSQL)
  CloseConn
        End If
%>

------解决方案--------------------
应该是语法错了,好好检查下,asp生成后的SQL放PL/SQL可以执行?
------解决方案--------------------
你看只修改一个字段试试,看行不行!行了就一个字段一个字段加上排除
------解决方案--------------------
写一个简单的你不会其它的update语句也报错吧?
------解决方案--------------------
引用:
应该是语法错了,好好检查下,asp生成后的SQL放PL/SQL可以执行?

哈哈,好仔细啊 
------解决方案--------------------
"update finreport set state = 2 where ReportID='"&SID&"'"

ORALCE 没事带个单引号。保证没值时不报异常。




------解决方案--------------------
人家都说语句在plsql可以执行,还说语法错误,不是浪费人家时间
------解决方案--------------------
引用:
生成的在PL/SQL中可以执行


自己检查下驱动支持的oracle哪些特定函数,如果你的sql语句符合标准规定的,应该没问题,如果使用到了oracle特定的函数,就需要看你的驱动了,有些能在pl/sql执行,但是asp通过驱动链接就不一定支持那个函数了