【问题标题】:calling oracle procedure from java by passing sql statement which is taken from as user input通过传递取自用户输入的 sql 语句从 java 调用 oracle 过程
【发布时间】:2021-10-03 07:26:29
【问题描述】:

我正在尝试使用 java 调用 oracle 过程。 我正在从用户读取 sql 查询并传递给程序。 所以当我试图将select * from emp where emp_id like 'XX' 作为声明传递时, 该过程以以下错误结束:-

Error Msg = ORA-06550: line 1, column 103:
PLS-00103: Encountered the symbol "XX" when expecting one of the following:

   ) , * & = - + < / > at in is mod remainder not rem =>
   <an exponent (**)> <> or != or ~= >= <= <> and or like like2
   like4 likec between || multiset member submultiset
The symbol ", was inserted before "XX" to continue.

我该如何克服这个???

提前致谢

【问题讨论】:

  • 请编辑您的问题以包含您的过程的代码,以及如何从 Java 中调用它。 (如果您还没有处理这种可能性,还建议您阅读 SQL 注入。)
  • 你能调试你看不到的代码吗?好吧,我们也不能。请阅读stackoverflow.com/help/minimal-reproducible-example

标签: java oracle plsql


【解决方案1】:

通常like 用于字符模式,而不是您指定的固定值XX

你应该使用:

select * from emp where emp_id='XX'

也可能是因为您的 Java 代码将 ' 解析为 " 字符。看看吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多