有没有办法让SQL接受一个数字的参数?

时间:2014-09-30 12:38:24

标签: sql oracle sqlplus

我坚持使用Oracle Plus的这个Homework问题,因此任何指向正确方向的指针都会很棒。我需要......

" 1.创建一个脚本,该脚本将带有一个分区参数(DIV)和脚本执行,并为该部门的所有员工生成员工报告。"

这是相关表格的布局

-Division_ID,名称

Employees2 ,Employee_ID,Division_ID,Job_ID,First_Name,Last_Name,Salary

到目前为止我已经

SET DEFINE '#'
SELECT Last_Name || ‘,’ || first_name AS Name, Divisions.Name

FROM Employees INNER JOIN Divisions 
ON Employees2.Division_ID = Divisions.Divisions_ID

WHERE Division_ID = #v_Division_ID

它要求我输入division_id,但是当我把它放入其中时它不起作用。现在,Division_ID列不是数字而是缩写,例如" SAL"对于销售似乎错误是因为oracle plus不会把字母作为输入而只是数字?有没有办法制作这个脚本,所以它接受不是数字的字符串/数据,而是像" sal"?

1 个答案:

答案 0 :(得分:0)

当将替换变量与VARCHAR2进行比较时,您需要输入要提供的值,例如'SAL',周围有单引号。

以下是SCOTT示例模式的示例:

SCOTT@dev> SET DEFINE '#'
SCOTT@dev> 
SCOTT@dev> 
SCOTT@dev> SELECT e.ename employee_name
  2  FROM emp e
  3  INNER JOIN dept d
  4  ON e.deptno   = d.deptno
  5  WHERE d.dname = #v_dname
  6  /
Enter value for v_dname: 'SALES'
old   5: WHERE d.dname = #v_dname
new   5: WHERE d.dname = 'SALES'

EMPLOYEE_N
==========
ALLEN
WARD
MARTIN
BLAKE
TURNER
JAMES

6 rows selected.

因此,对您而言,您只需为#v_Division_ID输入“SAL”。