不知道是什么问题?还是请高手,oraRichard如果在来看看 try:var mannum nvarchar2(10); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var mannum varchar2(10);exec kbmanager.insert_kdata('0001','测试','er','中国',:mannum);print mannum;commit;这段代码是在oracle的sql plus中调用的,它正常,不是这里的错。是我在delphi中调用时执行这个存储过程时出的错.表结构如下:FKID char(10) not nullFTypeID varchar2(10),FDepID varchar2(10),FTopic varchar2(60),FFileType varchar2(20)其中FTYPEID, FDEPID,FTOPIC,FFILETYPE是前四个参数,fkid是序列值。delphi中调用过程如下 spType.close; spType.Parameters.ParamByName('Topic').Value := edtTopic.Text; spType.Parameters.ParamByName('DepID').Value := edtDepID.Text; spType.Parameters.ParamByName('TypeID').Value := edtType.text; spType.Parameters.ParamByName('FileType').Value := cbxFileType.Text;//只有这个字段异常 spType.ExecProc; s := spType.Parameters.ParamByName('fkid').Value; 而且在调用时FFileType这个字段总报错,提示‘插入的值大于列的长度’,其实并没有超过20个字符,后来我把ffiletype改成varchar2(200),delphi程序才能执行成功,把数据保存到数据库中,但是就出现了ffiletype字段显示一串方格的情况 在SQL PLUS中执行那句话时,有没有改过FFILETYPE的长度? 你在delphi中用insert写一句同样参数的语句试试结果 在sqlplus执行时没有改长度,ffiletype长度就是20由于delphi程序保存时总提示值大于列宽,才改为200的,但改之前和之后在sqlplus里执行都正常,不出现任何错误,我试过了,还是一样,而且即使ffiletype参数用英文字符,如'pppp'等插入后也是一串方格,不管ffiletype改成什么值都是空格 你delphi是用什么控件连数据库的? 用ado连接的,用insert应该没事的,我没有试呢明天再说吧,太晚了,麻烦您了oraRichard 我发现总会出现下面的毛病:比如testid char(4),如果我通过程序向表中增加记录,字段值是两个汉字,总会出现值大于列宽的类似提示,为什么,是字符值转换的关系吗? 我估计是你的字符集出的问题select * from V$NLS_PARAMETERS 看看的NLS_CHARACTERSET/NLS_NCHAR_CHARACTERSET的值是什么,正确不正确 PARAMETER----------------------------------------------------------------VALUE----------------------------------------------------------------NLS_LANGUAGESIMPLIFIED CHINESENLS_TERRITORYCHINANLS_CURRENCYRMBPARAMETER----------------------------------------------------------------VALUE----------------------------------------------------------------NLS_ISO_CURRENCYCHINANLS_NUMERIC_CHARACTERS.,NLS_CALENDARGREGORIANPARAMETER----------------------------------------------------------------VALUE----------------------------------------------------------------NLS_DATE_FORMATDD-MON-RRNLS_DATE_LANGUAGESIMPLIFIED CHINESENLS_CHARACTERSETZHS16GBKPARAMETER----------------------------------------------------------------VALUE----------------------------------------------------------------NLS_SORTBINARYNLS_TIME_FORMATHH.MI.SSXFF AMNLS_TIMESTAMP_FORMATDD-MON-RR HH.MI.SSXFF AMPARAMETER----------------------------------------------------------------VALUE----------------------------------------------------------------NLS_TIME_TZ_FORMATHH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMATDD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCYRMBPARAMETER----------------------------------------------------------------VALUE----------------------------------------------------------------NLS_NCHAR_CHARACTERSETAL16UTF16NLS_COMPBINARYNLS_LENGTH_SEMANTICSBYTEPARAMETER----------------------------------------------------------------VALUE----------------------------------------------------------------NLS_NCHAR_CONV_EXCPFALSE已选择19行。 上面是我查出来的参数设置多问了,这个表V$NLS_PARAMETERS 在哪里我怎么没有找到 try:用sys/change_on_install登录SQL plusupdate props$ set value$='ZHS16GBK' where name='NLS_NCHAR_CHARACTERSET' oraRichard到期http://community.csdn.net/expert/Topicview2.asp?id=3617258领分 上面是我查出来的参数设置多问了,这个表V$NLS_PARAMETERS 在哪里我怎么没有找到 这是个视图,不是表,select ... from V$NLS_PARAMETERS oracle建立dblink的问题 昨天问题没写清楚,再发帖求助写sql 稍复杂的查询语句,求未达标人数及与享受面积差 ora-00907错误问题,求教。 Oralce 用户,表空间,表 之间的关系-高手进 存储过程语法错误,求救!!! 求助:如何用sql语句查出某一用户下含“code”列的所有表? Oracle 9i中文版基础教程(第二版)这本书如何? 我的查询不动了!帮我分析一下原因和优化方法 oracle网页版登录不进去? 弱智问题 数据库用不了了,求救
exec kbmanager.insert_kdata('0001','测试','er','中国',:mannum);
print mannum;
commit;这段代码是在oracle的sql plus中调用的,它正常,不是这里的错。是我在delphi中调用时执行这个存储过程时出的错.表结构如下:
FKID char(10) not null
FTypeID varchar2(10),
FDepID varchar2(10),
FTopic varchar2(60),
FFileType varchar2(20)
其中FTYPEID, FDEPID,FTOPIC,FFILETYPE是前四个参数,fkid是序列值。delphi中调用过程如下
spType.close;
spType.Parameters.ParamByName('Topic').Value := edtTopic.Text;
spType.Parameters.ParamByName('DepID').Value := edtDepID.Text;
spType.Parameters.ParamByName('TypeID').Value := edtType.text;
spType.Parameters.ParamByName('FileType').Value := cbxFileType.Text;//只有这个字段异常
spType.ExecProc;
s := spType.Parameters.ParamByName('fkid').Value;
由于delphi程序保存时总提示值大于列宽,才改为200的,但改之前和之后在sqlplus里执行都正常,不出现任何错误,我试过了,还是一样,而且即使ffiletype参数用英文字符,如'pppp'等插入后也是一串方格,不管ffiletype改成什么值都是空格
用insert应该没事的,我没有试呢
明天再说吧,太晚了,麻烦您了oraRichard
比如testid char(4),如果我通过程序向表中增加记录,字段值是两个汉字,总会出现值大于列宽的类似提示,为什么,是字符值转换的关系吗?
select * from V$NLS_PARAMETERS
看看的NLS_CHARACTERSET/NLS_NCHAR_CHARACTERSET的值是什么,正确不正确
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_LANGUAGE
SIMPLIFIED CHINESENLS_TERRITORY
CHINANLS_CURRENCY
RMB
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_ISO_CURRENCY
CHINANLS_NUMERIC_CHARACTERS
.,NLS_CALENDAR
GREGORIAN
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_DATE_FORMAT
DD-MON-RRNLS_DATE_LANGUAGE
SIMPLIFIED CHINESENLS_CHARACTERSET
ZHS16GBK
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_SORT
BINARYNLS_TIME_FORMAT
HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT
DD-MON-RR HH.MI.SSXFF AM
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_TIME_TZ_FORMAT
HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT
DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY
RMB
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_NCHAR_CHARACTERSET
AL16UTF16NLS_COMP
BINARYNLS_LENGTH_SEMANTICS
BYTE
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_NCHAR_CONV_EXCP
FALSE
已选择19行。