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#中的标题所以请帮助。
最佳答案
Oracle 支持在列名中使用 Unicode。并且列出的构造是已知的。但是,有几个地方会出错。生活在荷兰并在 Oracle 中使用多种外语,总是很高兴遇到由于使用 Unicode 而导致的应用程序或 Oracle 内核中的另一个错误。在 Oracle 11.2 中,大多数 Unicode 问题终于得到解决。
请检查以下可能的原因:
数据库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 不会注意到,直接将所有字符二进制传输,无需转换。
请更新您的问题以反射(reflect)它返回的内容而不是倒置的问号。
此转换发生在所有数据、列名称或列内容中。
您能否更新您的问题,US7ASCII 范围之外的列内容是否也显示不正确?
客户代码
大部分客户端软件尚未使用 UNICODE 字符进行测试。使 SQL 应用程序崩溃的最简单方法通常是引入大小写混合的列名或 UNICODE 列名。由于您的客户端代码是 C# 并且您可能使用 ODP.NET 进行连接,因此在您的情况下这应该不是问题。
现在,请检查您是否正在运行 ODP.NET。
分布式数据库
除了客户端/服务器字符集转换之外,Oracle 分布式数据库还会引入额外的问题。涉及一些错误。如果您使用分布式数据库,请更新问题。
关于stored-procedures - Oracle 存储过程中的 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6578409/