当args传递时,oracle查询返回0条记录

Vic*_*tor 2 sql oracle

当我运行这样的SQL:

select * from tbl_emp where emp_name like '%%'
Run Code Online (Sandbox Code Playgroud)

它给了我所有记录.当我像这样运行它:

select * from tbl_emp where emp_name like : arg_emp_name
Run Code Online (Sandbox Code Playgroud)

然后执行查询,然后传递arg_emp_name '%%',它返回0条记录.为什么会这样?谢谢.

Con*_*rix 5

这应该工作正常.例如,以下内容返回与no where子句相同数量的记录

EXEC :arg_emp_name := '%%';

SELECT * FROM ALL_TABLES WHERE TABLE_NAME LIKE  :arg_emp_name
Run Code Online (Sandbox Code Playgroud)

如果向字符串添加更多内容

   EXEC :arg_emp_name := '%ABC%';

   SELECT * FROM ALL_TABLES WHERE TABLE_NAME LIKE  :arg_emp_name
Run Code Online (Sandbox Code Playgroud)

仅返回名称中包含ABC的表

但是我会注意到:和之间没有空间arg_emp_name

有那个空间导致错误

Error starting at line 4 in command:
SELECT * FROM ALL_TABLES WHERE TABLE_NAME LIKE  : arg_emp_name
Error report:
SQL Error: ORA-01008: not all variables bound
01008. 00000 -  "not all variables bound"
*Cause:    
*Action:
Run Code Online (Sandbox Code Playgroud)