Welcome 微信登录

首页 / 数据库 / MySQL / Oracle PL/SQL之VARCHAR2 QUALIFIER

在声明VARCHAR2变量时,我们可以指定其最大长度单位为CHAR:v1 VARCHAR2(2 CHAR); 或BYTE:v2 VARCHAR2(2 BYTE); ,大多数默认什么都不指定:v3 VARCHAR2(2); 。 那么这三者有什么区别呢? 请看例子:
  1. DECLARE  
  2.   v1 VARCHAR2(2 CHAR);  
  3.   v2 VARCHAR2(2 BYTE);  
  4.   v3 VARCHAR2(2);  
  5. BEGIN  
  6.   
  7.   <<v1_test>>  
  8.   BEGIN  
  9.     v1 := "测试";  
  10.     dbms_output.put_line("v1_test successed, v1=" || v1);  
  11.   EXCEPTION  
  12.     WHEN OTHERS THEN  
  13.       dbms_output.put_line("v1_test failed, =>" ||  
  14.                            dbms_utility.format_error_stack);  
  15.   END;  
  16.   
  17.   <<v2_test>>  
  18.   BEGIN  
  19.     v2 := "测试";  
  20.     dbms_output.put_line("v2_test successed, v2=" || v2);  
  21.   EXCEPTION  
  22.     WHEN OTHERS THEN  
  23.       dbms_output.put_line("v2_test failed, =>" ||  
  24.                            dbms_utility.format_error_stack);  
  25.   END;  
  26.   
  27.   <<v3_test>>  
  28.   DECLARE  
  29.     l_default_qualifier nls_session_parameters.VALUE%TYPE;  
  30.   BEGIN  
  31.     --we can get the default qualifier by querying nls_session_parameters.  
  32.     SELECT VALUE  
  33.     INTO   l_default_qualifier  
  34.     FROM   nls_session_parameters  
  35.     WHERE  parameter = "NLS_LENGTH_SEMANTICS";  
  36.     dbms_output.put_line("v3_test, l_default_qualifier=" ||  
  37.                          l_default_qualifier);  
  38.     
  39.     v3 := "测试";  
  40.     dbms_output.put_line("v3_test successed, v3=" || v3);  
  41.   EXCEPTION  
  42.     WHEN OTHERS THEN  
  43.       dbms_output.put_line("v3_test failed, =>" ||  
  44.                            dbms_utility.format_error_stack);  
  45.   END;  
  46. END;  
输出:
  1. v1_test successed, v1=测试  
  2. v2_test failed, =>ORA-06502: PL/SQL: numeric or value error: character string buffer too small  
  3.   
  4. v3_test, l_default_qualifier=BYTE  
  5. v3_test failed, =>ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Oracle PL/SQL之EXCEPTION -- WHEN OTHERS THENOracle PL/SQL之处理index不连续的table类型变量相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数