You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python连接Oracle数据库遇ORA-00933错误,求解决建议

解决Oracle SQL ORA-00933错误的方案

核心问题:SQL语句语法顺序错误

Oracle中ORDER BY子句必须放在FETCH FIRST ... ONLY之前,你的SQL把两者顺序写反了,导致语法解析失败。修正后的SQL语句如下:

SELECT a.*
FROM my_user.{table} a
ORDER BY a.ACCNT_ID
FETCH FIRST 4333 ROWS ONLY

额外逻辑问题修正

你的代码中查询的是a.*(整行数据),但后续却尝试将row[0]当作行数打印,这逻辑不符。如果需要统计总行数,应改用COUNT(*)查询:

account_query = f'''
                SELECT COUNT(*)
                FROM my_user.{table} a
                '''
cursor.execute(account_query) 
row = cursor.fetchone() 

if row:
    row_count = row[0]
    print("Number of rows:", row_count)
else:
    print("No rows found.")

如果确实需要获取前4333行数据,使用修正顺序后的SQL即可正常执行,后续可遍历结果:

account_query = f'''
                SELECT a.*
                FROM my_user.{table} a
                ORDER BY a.ACCNT_ID
                FETCH FIRST 4333 ROWS ONLY
                '''
cursor.execute(account_query) 
# 遍历获取到的行
for row in cursor:
    print(row)
# 或一次性获取所有行并统计数量
rows = cursor.fetchall()
print(f"共获取到{len(rows)}行数据")

其他排查要点

  • 确认my_user是存在的合法Schema/用户,且当前连接用户拥有该表的访问权限
  • 确认ACCNT_ID是myTable中的有效列名,拼写无错误

内容的提问来源于stack exchange,提问作者fsssaiyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:29:57