Stored procedures Oracle存储过程中的Unicode
BillNo As?是unicode,但oracle在尝试以C显示在DataGrid标头时没有返回Stored procedures Oracle存储过程中的Unicode,stored-procedures,unicode,oracle10g,Stored Procedures,Unicode,Oracle10g,BillNo As?是unicode,但oracle在尝试以C显示在DataGrid标头时没有返回 因此,请提供帮助。Oracle支持在列名中使用Unicode。所列出的结构已知有效。然而,有几个地方出现了问题。生活在荷兰,在Oracle中使用多种外语,由于使用Unicode,在应用程序或Oracle内核中遇到另一个bug总是令人高兴的。在Oracle11.2中,大多数Unicode问题最终都得到了解决 请检查以下可能的原因: 数据库UNICODE? 你的数据库是AL32UTF吗?使用v$nls
因此,请提供帮助。Oracle支持在列名中使用Unicode。所列出的结构已知有效。然而,有几个地方出现了问题。生活在荷兰,在Oracle中使用多种外语,由于使用Unicode,在应用程序或Oracle内核中遇到另一个bug总是令人高兴的。在Oracle11.2中,大多数Unicode问题最终都得到了解决 请检查以下可能的原因: 数据库UNICODE? 你的数据库是AL32UTF吗?使用v$nls\u参数中的选择值,其中name='nls\u CHARACTERSET' 客户机和服务器之间不需要的转换 这可能是你的原因 您的客户端是否正确配置,是否使用了所需的设置 由于C支持与Oracle几乎相同的Unicode,因此请始终使用类似“DUTCH_the NETHERLANDS.AL32UTF8”的字符集作为客户端的字符集,例如使用NLS_LANG。有关更多说明,请参阅 否则Oracle将把超出值范围的字符转换为类似“?”的字符。请注意,只有当两侧的字符集不同时,才会发生字符转换。如果两者都不正确但相同,Oracle不会注意到,只会将所有字符转换为二进制而不进行转换 请更新您的问题以反映返回的内容,而不是颠倒的问号 此转换与所有数据、列名或列内容一起发生 您是否可以更新您的问题:US7ASCII范围之外的列内容是否也显示不正确 客户端代码 大部分客户端软件都没有使用UNICODE字符进行测试。使SQL应用程序崩溃的最简单方法通常是引入大小写混合的列名或UNICODE列名。因为您的客户机代码是C,并且您可能正在使用ODP.NET进行连接,所以在您的情况下,这应该不是一个问题 现在,请检查您是否正在运行ODP.NET 分布式数据库
除了客户机/服务器字符集转换之外,Oracle分布式数据库还可能带来额外的问题。其中涉及到一些bug。如果您使用分布式数据库,请更新问题。如果您发现问题的答案有用,请单击答案旁边的“接受”图标,接受答案。否则,没有人会非常积极地帮助您……请阅读如何将命令传递给dbms?您确定sqlplus和/或您正在使用的shell不会损坏尼泊尔代码点吗?您是否尝试过使用其他非拉丁语代码点命名列?例如西里尔字母U+0400-U+04ff?hi@Prayag Upd这个答案对解决您的问题有帮助吗?如果没有,请在您的问题中添加不成功的内容。当答案对您有帮助时,您能否通过单击旁边的空心绿色复选标记来接受它?
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;