如何在参数化SQL查询中使用Nvarchar2列用于Unicode字符?

时间:2016-10-14 06:27:36

标签: sql oracle unicode plsql

大家好我在Oracle 10g中遇到Nvarchar2列的问题,基本上我想在运行时在DB表中插入Unicode字符,我谷歌为此并找到N前缀方法在Nvarchar2列中插入或更新Unicode字符如下所示:

  

Insert into nvarchar_test (c_nvarchar) VALUES (N'اب ج قر');

我上面插入的字符是URDU语言字符,上面的语句工作正常,但我的要求是我想在运行时传递URDU Unicode字符作为变量而不是硬编码我在PL-SQL下面尝试过代码:

Declare     
  urdu_characters Nvarchar2 (500);    
Begin    
  urdu_characters := 'اب ج';    
  Insert into nvarchar_test (c_nvarchar) VALUES (N urdu_characters);    
End;

如上所示,代码不正确,因为我无法使用带有变量的N前缀,也不知道我将如何帮助我理清这个问题。

谢谢!

1 个答案:

答案 0 :(得分:2)

从您的初始问题:N更改字符串常量,因此请在声明时使用它。以下是你必须去的方式:

Declare     
  urdu_characters Nvarchar2 (500);    
Begin    
  urdu_characters := N'اب ج';    
  Insert into nvarchar_test (c_nvarchar) VALUES (urdu_characters);    
End;

N'اب ج'(或多或少)等同于CAST('اب ج' AS NVARCHAR2(..))。在pl中包含urdu字符的可能性是使用ASCIISTR(..)函数:

Declare     
  urdu_characters Nvarchar2 (500);    
Begin    
  urdu_characters := 'اب ج';    
  Insert into nvarchar_test (c_nvarchar) VALUES (ASCIISTR(urdu_characters));    
End;