【发布时间】:2015-05-11 12:16:02
【问题描述】:
基本上,我想使用他/她的职位和位置从数据库中搜索员工。我使用动态 sql (dbms_sql.v7) 编写了一个函数名 searchemp。
表结构
Emp表:
Empno number
Ename varchar
Job varchar
Deptno number
部门表
DEPTNO number
DNAME varchar
LOC varchar
所以我的选择语句如下所示:
select_stm:= 'SELECT * FROM emp FULL OUTER JOIN dept ON emp.deptno = dept.deptno where job = ' || UPPER(e_job) || ' and loc = ' || UPPER(e_loc);
- 使用大写是因为这两个表中的所有内容都是大写的。
-
函数名是这样调用的
SQL> execute searchemp('&job', '&loc'); Enter value for job: clerk Enter value for loc: dallas
当我在屏幕上显示sql语句时:
SELECT * FROM emp FULL OUTER JOIN dept ON emp.deptno = dept.deptno where job = CLERK and loc = DALLAS;
我的错误是 CLERK 和 DALLAS 的标识符无效。 CLERK 和 DALLAS 周围也没有单引号,因此在数据库中找不到任何员工。如果参数是数字(即empno),则该函数可以正常工作。
我在 SQL*Plus 中测试过的 sql 语句很好。 如何处理单引号以显示我想要的内容?
【问题讨论】: