2015-11-13 50 views
0

我創建一個存儲過程,根據獎金和工資計算總金額。 存儲過程創建如下:數字到字符隱式轉換在PL/SQL

 Create or replace procedure cal_sum(p_salary in number, p_bonus inout number, p_output out number) 
     Begin 
     p_bonus :=p_salary*bonus/100; 
     p_output :=p_bonus+p_salary; 
     End; 

而且存儲過程爲使用匿名塊調用:

  Declare 
      v_salary number := 2000; 
      v_bonus number := 10; 
      v_total char(10); 
      Begin 
      cal_sum(v_salary,v_bonus,v_total); 
      End; 

上述程序工作正常,沒有編譯時錯誤。 我在上面的查詢中明白的是,即使數據類型對於存儲過程和匿名塊中的p_output和v_total參數分別不同,查詢的工作方式也是如此 pl/sql是否支持將數字轉換爲char? plz help

+0

有多個可用的文章深入演練的隱式轉換。 http://intermediatesql.com/oracle/how-oracle-implicit-type-conversion-works-part-1/ – womp

+0

對於您所嘗試的內容,功能是否比存儲過程更合適? –

+0

上面的查詢只是一個例子,用於說明數據類型轉換的場景 – dcmotor

回答

0

回答你的簡單問題。下面的例子說明了你的困境:)

SQL> SET SERVEROUTPUT ON; 
    SQL> DECLARE 
     2 lv_number NUMBER:='12345'; 
     3 BEGIN 
     4 dbms_output.put_line(lv_number); 
     5 END; 
     6/
    12345 

見即使vv_number是NUMBER數據類型的,但我還是已經在'分配這一點。因此,甲骨文貫穿其智能:P即自己的轉換。但是,同樣的,如果你用下面的例子

SQL> ed 
Wrote file afiedt.buf 
SQL> DECLARE 
    2 lv_number NUMBER:='12345a'; 
    3 BEGIN 
    4 dbms_output.put_line(lv_number); 
    5 END; 
    6/
DECLARE 
* 
ERROR at line 1: 
ORA-06502: PL/SQL: numeric or value error: character to number conversion error 
ORA-06512: at line 2 

嘗試現在你可以看到明顯的區別,雖然轉換12345a爲數字,失敗。

相關問題