Unicode in Oracle stored procedure

create or replace PROCEDURE SP_GETINCOMEENTRY ( idec IN NUMBER := 1 , p_IncomeID tbl_income.incomeid%type := 1 , P_Data Out Sys_Refcursor , P_Fromdate tbl_acc_income.Dateeng%Type := null , P_ToDate tbl_acc_income.Entrydate%type := null ) is begin if idec=1 then open p_DATA for SELECT INCOMEID as ID , INCOMENAME as Name FROM TBL_INCOME order by p_IncomeID ; else if Idec=2 then OPEN P_DATA FOR Select Incomeid As id , Billno As "¿¿¿ ¿¿" , Relatedperson As "AccountHolder" , Incomesourid As "IncomeID" , Dateeng As"EnglishDate" , Remarks As "Remarks" , Amount As "Amount" , Username As "UserName" , Entrydate As "EntryDate" from Tbl_Acc_Income where Tbl_Acc_Income.dateeng between P_Fromdate and P_Todate order by INCOMEID ; end if; end if; end; 

BillNo As "¿¿¿ ¿¿" is unicode in NEPALI , but oracle does not return "¿¿¿¿¿" when trying to display a header in a DataGrid in C #

So please help.

+4
source share
1 answer

Oracle supports the use of Unicode in column names. It is known that work on the design. However, there are several places where things go wrong. Living in the Netherlands and working with many foreign languages ​​in Oracle, it has always been nice to meet another mistake in the application or the Oracle kernel due to the use of Unicode. In Oracle 11.2, most Unicode problems have finally been resolved.

Check the following possible causes:

UNICODE database?

Is your database AL32UTF? Use select value from v$nls_parameters where name='NLS_CHARACTERSET'

Unwanted translation between client and server

This is probably the reason.

Is your client configured correctly and uses the necessary settings?

Since C # supports almost the same Unicode as Oracle, always use something like "DUTCH_THE NETHERLANDS.AL32UTF8" as a set of your clients, for example, using NLS_LANG. Additional instructions can be found in the manual of one of our software packages .

Otherwise, Oracle converts characters from a range of values ​​to something like "?". Note that character conversion ONLY occurs when characters on both sides are distinguished. If they are both wrong but identical, Oracle does not notice and simply wraps all binary characters without conversion.

Please update your question to reflect what it returns, instead of inverted question marks.

This conversion occurs with all data, column names, or column contents.

Can you update your question if the contents of the column are not displayed outside the US7ASCII range or not?

Client code

Most client software has not been tested with UNICODE characters. The easiest way to get an SQL application to crash is to often enter mixed case column names or UNICODE column names. Since your client code is C #, and you are probably using ODP.NET to connect, this should not be a problem in your case.

For the moment, make sure you are using ODP.NET.

Distributed databases

Oracle distributed databases can also introduce additional problems in addition to client / server character set conversion. There are some errors. Refresh the question if you are using distributed databases.

0
source

All Articles