当我运行这样的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条记录.为什么会这样?谢谢.
这应该工作正常.例如,以下内容返回与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)