select * from A,B where A.CourseNum=B.billon;
其中CourseNum爲number類型,billion爲varchar2類型。
假如b.billion全部都是可以轉爲number的就沒有問題。
--疑問:
DML語句的處理過程:
1、創建遊標
2、分析語句,語法分析
(1)翻譯SQL語句,驗證它是否是合法的語句,即書寫的正確
(2)實現數據字典的查找,以驗證是否符合表和列的定義。
......
......
在2、(2)中,不對錶A.CourseNum=B.billon的列類型進行驗證嗎?
或者說 這是屬於數據轉換的範圍,只有在執行階段才識別的?
select * from A,B where A.CourseNum=字符串,字符串能夠轉爲數字的,就沒有問題。
select * from A,B where B.billon=數字,則如果B.billon存的都是可以轉爲數字的,則沒問題。但是如果B.billon存的有一個是不可以轉爲數字的,則有報ORA-01722: 無效數字異常。
數據轉換或者鍵值約束、死鎖等,是在執行階段才確定的。