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 "¿¿¿ ¿¿"
,是NEPALI中的unicode,但oracle
在尝试显示在DataGrid
C#中的标题时未返回“¿¿¿¿¿
所以请帮助。
答案 0 :(得分:0)
Oracle支持在列名中使用Unicode。并且列出的构造已知可行。但是,有几个地方出了问题。在荷兰生活并在Oracle中使用许多外语,由于使用了Unicode,因此在应用程序或Oracle内核中遇到另一个错误总是很高兴。在Oracle 11.2中,大多数Unicode问题终于得到了解决。
请检查以下可能原因:
您的数据库是AL32UTF吗?使用select value from v$nls_parameters where name='NLS_CHARACTERSET'
这是你可能的原因。
您的客户端是否已正确配置并使用所需的设置?
由于C#支持与Oracle几乎相同的Unicode,因此请始终使用类似“DUTCH_THE NETHERLANDS.AL32UTF8”的内容作为客户端的字符集,例如使用NLS_LANG。可以在manual of one of our software packages中找到更多说明。
否则,Oracle会将值范围内的字符转换为“?”之类的字符。请注意,只有当双方的角色不同时才会进行角色转换。如果它们都不正确但相同,Oracle将不会注意到并且只转换所有字符二进制而不进行转换。
请更新您的问题以反映返回的内容,而不是倒置的问号。
此转换适用于所有数据,列名称或列内容。
您是否可以更新您的问题是否显示US7ASCII范围之外的列内容也不正确?
大部分客户端软件尚未使用UNICODE字符进行测试。使SQL应用程序崩溃的最简单方法通常是引入混合大小写列名称或UNICODE列名称。由于您的客户端代码是C#,并且您可能正在使用ODP.NET进行连接,因此在您的情况下这应该不是问题。
目前,请检查您是否正在运行ODP.NET。