我正在用SQL构建一个小型项目,以自动化由于ORA-12899 -值太大而导致的加载失败。
从错误存储库表中,我可以获得以下错误消息:
“ORA-12899:值过大,列”SCOTT“.”TABLE_EMPLOYEE“.”名称“(实际为15,最大值为10)
我想使用一个正则表达式,以便从上面的错误消息中提取以下DDL,
ALTER TABLE TABLE_EMPLOYEE MODIFY NAME VARCHAR2(15);
下面是我的当前代码。这样,我只能提取模式名称,即"SCOTT“。
SELECT REGEXP_SUBSTR('ORA-12899: value too
嗨,有什么方法可以捕获对象(如表和列),在ORACLE中抛出异常吗?
我需要确定对象名,以自定义错误消息,显示出现异常的表和字段的名称。
我知道有一个变量SQLCODE和SQLERRM,但我不知道是否有其他变量或函数返回错误对象的名称。
我想要这样的东西
exception
when others then
begin
if SQLCODE = -20010
then dbms_output.put_line('The Value Too Large in the field ' || GetObjectNameError);
en
我想要执行几个这样的语句
comment on column Quite_A_Long_Table_Identifier.Quite_A_Long_Column_Identifier is 'Something';
我收到一条类似下面的错误消息。
ORA-00604: error occurred at recursive SQL level 1
ORA-12899: value too large for column "CONVER"."CAPTURE_DDL"."OBJECT_NAME" (actual: 60, maxim
我的数据框中有一列包含文本,字符数超过255,当我在oracle中使用dbWritetable时,我得到了这个错误:
Error in .local(conn, statement, ...) :
execute JDBC update query failed in dbSendUpdate (ORA-12899: value too large for column "DWTEST"."PCP_DOCS"."WORDS" (actual: 341, maximum: 255)
)
有人能帮上忙吗?提前感谢
如何获取查询中错误的位置?
我需要获取查询字符串中导致错误的位置,就像sqlplus所做的那样:
SQL> insert into tbl (data) values('12345')
2 /
insert into tbl (data) values('12345')
*
ERROR at line 1:
ORA-12899: value too large for column "schmnm"."tbl"."data" (actual: 5,
maximum: 3
因此,我试图将数据保存到Oracle数据库中。我有一根绳子:
Väste
(某个州的名称)。
当我对它执行.length()时,我得到5,但是当我将它保存到数据库时,我得到:
ORA-12899: value too large for column "dude"."POST_ADR"."STATE_CD" (actual: 6, maximum: 5)
那我怎么得到“神谕”长度呢?
UPDATE ta_1 SET v_1 = 'new value' WHERE v_1 = 'value';
UPDATE ta_1 SET v_1 = 'newest value';
第一个update查询返回异常ORA-12899,第二个更新查询在此表上执行时不返回:
CREATE OR REPLACE type t_2 AS object
(v_1 VARCHAR2 (4000));
CREATE OR REPLACE type t_1 AS object
(
v_1 VARCHAR2 (4000),
v_2 t_
我试图使用如下语句从Oracle中的表中删除一列:
ALTER TABLE "MY_TABLE" DROP COLUMN "ENABLED";
但是我发现了一个错误:
ORA-12899: value too large for column "MY_TABLE"."ENABLED" (actual: 184, maximum: 22)
列定义为
"ENABLED" NUMBER(1,0) DEFAULT NULL NOT NULL ENABLE,
在所有行中,它的值仅为0或1。
有人能告诉我为什么会有这个错误,以
我正在运行一个简单的insert到select,我的代码是
Insert into TEMP
select a.emp_name,
Null as address,
a.emp_id,
.......
from Temp1 a,Temp2 b where a.batch_id=b.batch_id
现在,列地址是varchar2(30),尽管我要插入NULL。我有溢流。
SQL错误: ORA-12899:值过大,列"TEMP"."ADDRESS“(实际值: 35,最大值: 30)
真的很困惑,happen.
当我在oracle表中插入字符串时,如果字符串大于varchar列的定义长度,将导致以下ORA错误。第一个“ORA-12899”是非常容易理解的,并且给出了正确的信息。但有时在我的应用程序中,由于相同的原因,我得到了不同的错误,它是ORA- 01461,它显示"ORA- 01461 -只能为insert into LONG列提示绑定一个长值“。这个错误说明了非常不同的原因,但我只有varchar列和插入的字符串超过了定义的大小。不确定LONG值在图片中的位置。我在这个上也发现了类似的东西。
ORA-12899 - Value too Large for Column
ORA- 0146
VARCHAR2(max_size CHAR)应该存储max_size字符。我观察到Unicode文本的其他/奇怪行为。
让我们考虑一下这个例子:
create table test (id varchar2(3 char) not null, primary key (id));
insert into test(id) values('abc');
insert into test(id) values('ффф');
Query 1 ERROR: ORA-12899: value too large for column "TEST"
我使用hibernate将我的类映射到oracle数据库。但是当我尝试插入一些东西时,会得到:
java.sql.BatchUpdateException: ORA-12899: value too large for column
我是用hibernate工具生成这个表的,有没有可以手动修改列大小设置的?我尝试在hbm.xml文件中设置列“1000”,在object类中设置@length=(length=1000),但这些都不起作用。
谢谢。
我正在运行以下查询。但得到奥拉-12899。尽管要插入的字符串长度是30。
INSERT INTO TABLE1 SELECT * FROM temp_Table1 where LENGTH(column1)=30;
SQL Error: ORA-12899:value too large for column "TABLE1"."column1" (actual: 31, maximum: 30)
select column1 from temp_Table1 where LENGTH(column1)=30;
Testing - HLC/TC De
我得到一个'ORA-12899 -值对于列来说太大(实际: 5,最大值: 4)‘,我无法跟踪它。我正在使用C#中的Oracle.ManagedDataAccess提供程序做教科书上的参数化插入。有没有人见过这样的东西?
我们正在做的事情如下所示:
var commandText = "insert into MyTable ([a ton of variables]) values(:A,:B,..........)";
using (OracleConnection connection = new OracleConnection(connectionStrin
我有一个带有数字列的表:
create table test (a number(2,0));
接下来,我想创建一个基于a列的虚拟列:
alter table test add (b varchar2(3) as ('A:'||to_char(a)));
这会导致错误:
ORA-12899: value too large for column "B" (actual: 12, maximum: 42)
为什么我会有这个错误?如果我用substr替换to_char,这是可行的,但我想知道Oracle是如何确定“实际”和“最大”值的?
我怀疑最大值与数值类型的最大
第一次使用sqlldr,只是尝试加载带有单个列的文件,却找不到正确的方法:(作为分隔符,我放了什么?
这是我的.ctl文件:
load data
infile 'myfile.dat'
into table mytable
fields terminated by ''
(mycolumn)
我一直在.log中发现错误,比如:
Record 4: Rejected - Error on table ..., column ....
ORA-12899: value too large for column "... (actual: 80, ma
我们将数据库从WE8MSWIN1252迁移到AL32UTF8,数据会自动转换为utf8,有时我们会得到一个错误ORA-12899:value too large for column xxx,这是正常的,因为非拉丁字符是用多个字节编码的。我们希望在相同的导出数据和数据结构中实现这一点,然后只导入数据结构,然后执行一个Sql脚本来修改列字符集:varchar2(4000 byte)变成varchar2(4000 char),最后导出数据。你能告诉我一次出口和一次进口是否可以吗?谢谢你的帮助,
比勒尔
我和SYSDBA有联系。我想让用户'OFFC'在E:\oracle\extract.So目录上进行读写,我尝试的是:
CREATE OR REPLACE DIRECTORY EXTRACT_DIR AS 'E:\oracle\extract';
GRANT READ, WRITE ON DIRECTORY EXTRACT_DIR TO OFFC;
GRANT EXECUTE ON UTL_FILE TO OFFC;
我得到的错误是:
Directory created.
GRANT READ, WRITE ON DIRECTORY EXTRACT_DIR TO