2014-09-30 25 views
0

我被困在Oracle Plus的這個家庭作業問題上,所以任何指向正確方向的指針都會很棒。我需要...是否有辦法讓SQL +接受一個不是數字的參數?

「1.創建一個腳本,該腳本將採用腳本執行的分區參數(DIV),併爲該分區中的所有員工生成員工報告。

下面是相關表格的佈局

部門 -Division_ID,名稱

僱員2,的Employee_ID,Division_ID,JOB_ID,名字,姓氏,薪金

到目前爲止,我有

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不會把字母當作輸入而只是數字?有沒有辦法讓這個腳本,因此它接受字符串/數據不是數字,而是像「薩爾」?

+1

什麼是「Oracle Plus」? – 2014-09-30 12:44:32

+0

嘗試'... WHERE Division_ID ='#v_Division_ID'' – mustaccio 2014-09-30 13:11:33

+0

我假設你的意思是SQL * Plus而不是Oracle +,對不對? – 2014-09-30 13:19:27

回答

0

當將替換變量與VARCHAR2進行比較時,您需要輸入要提供的值,例如, 'SAL',周圍有單引號。

下面是從SCOTT示例模式爲例:

[email protected]> SET DEFINE '#' 
[email protected]> 
[email protected]> 
[email protected]> 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. 

因此,對於你,你只需要輸入「SAL」你#v_Division_ID。

相關問題