我收到了一个用户的电子邮件,当他看到以下错误输出时,他使用我们的网站。
java.sql.SQLException: ORA-06502: PL/SQL:数值或值错误:字符串缓冲区太小-06512:在"WEB_OWNER.SSFP_GET_WE_OBJ",行300 ORA-06512:在第1行
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:137)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:315)
a
嗨,我正在尝试使用连接描述符和新创建的SQL凭据连接到Oracle 12c实例。但是,当我试图使用凭据连接时,我得到:
ORA-00604: error occurred at recursive SQL level 1
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 18
我设法找到了关于这方面的可能文档:。
但不幸的是,我没有Oracle支持帐户来查看详细信息。我个人的猜测是,一些登录PL/SQL (一个触发器或过程)正在运行,并且我已经获得的凭据
我有一些用户试图使用JBSQL工具运行的Oracle PL?SQL代码
有几行dbms_output代码-当用户运行代码时,他们会得到一个错误
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
如何增加缓冲区大小?
我试过了
SET SERVEROUTPUT ON SIZE 1000000;
但得到的是“未知的期权大小”。是否存在与设置缓冲区大小的工具无关的“默认”命令?或者我可以在我的PL/SQL中添加任何内容吗?
(最终,我将把代码行写到一个表/文本文件中,但是需要启动并运行这个过程,
我尝试了以下代码的不同方法,比如去掉while或if,但当我将两者放在一起(if和while)时,我总是在最后得到错误...
undefine numero
set serveroutput on
accept numero prompt 'Type # between 100 and 999: '
declare
i number:=1;
a char(25);
b char(1);
c varchar2(10);
d number;
begin
c := №
d := length(c);
b := su
在使用imp在oracle 10G数据库中执行导入时,我收到以下错误:
IMP-00017: following statement failed with ORACLE error 604:
CREATE TABLE DASHBOARD_ADMINISTRATOR
(ID NUMBER(19, 0) NOT NULL ENABLE,
USER_NAME VARCHAR2(20) NOT NULL ENABLE,
NAME VARCHAR2(50), FIRST_NAME VARCHAR2(50));
IMP-00003: ORACLE error 604 encountered
O
在为execute immediate构建动态SQL语句时,我希望使用绑定变量而不是字符串连接。
在下面的示例中,我可以为a、b和ret使用绑定变量,但当我尝试为f绑定时,我得到了一个ORA-06502: PL/SQL: numeric or value error: character to number conversion error。为什么以及如何绑定f?
我使用的是11.2.0.1.0。
create or replace function so4fun (
a in number,
b in number,
f in varchar2
) return number
在Oracle DB中,Im面临以下异常。
java.lang.RuntimeException: java.lang.RuntimeException: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [call SRS_ADMIN.SLI_UTIL.copyData(?,?)]; nested exception is java.sql.SQLException: ORA-06502: PL/SQL: numeric or value error: cha
我有以下存储过程:
create or replace PROCEDURE TEST_REQUEST(
outHTML OUT VARCHAR2,
varParameters IN XMLTYPE)
IS
tmpVar NUMBER;
BEGIN
outHTML :=
'<table><tr><td>Test!</td></tr></table>';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN
我有一个关于pl/sql匿名块的问题。虽然我可以显示select查询得到的变量,但如果我在update语句中使用它,我会得到一个强制转换错误。
我的代码如下所示:
set serveroutput on
DECLARE
var1 scheme.table.column1%type; /* number[8,0] */
var2 scheme.table.column2%type; /* number[8,2] */
BEGIN
/* return simple value */
select t.column1, t.column2
into var1, var2
from schem
我是一个新手,我需要一些建议来解决我的问题我创建了一个用户定义的聚合函数,例如:
create type nvarAggregate as object
(
storedAtt nvarchar2(300),
static function ODCIAggregateInitialize (sctx IN OUT nvarAggregate) return NUMBER,
member function ODCIAggregateIterate (self IN OUT nvarAggregate, value IN nvarchar2) return NUMBER,
member funct
这是代码。这不是完整的代码。我将其裁剪到第一个错误发生的地方:
FUNCTION get (
p_sql_o OUT VARCHAR2
) RETURN VARCHAR2 AS
str_sql VARCHAR2(4000);
BEGIN
str_sql := ' SELECT * FROM ( SELECT A.*, ROWNUM RNUM FROM ( ' ||
' SELECT item_code, ' ||
我正在处理一个pl-sql脚本,其中有大约10个TO_CHAR转换。
其中一个是抛出一个
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
异常。
目前,我正在使用这段代码记录消息
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Exception message is '||SQLERRM(sqlcode));
ROLLBACK;
我想添加(主要用于调试目的)抛出异常的行,以便接收格式为
ORA-0650
在SQLPLUS下执行我的脚本时遇到问题。在SQL Developer下,它工作得很好。
set serveroutput on size 1000000
declare
yyy varchar2(32000):='';
begin
yyy := 'XxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzX
Ora-06502: pl/SQL:数值或值错误。
选择listagg(listagg( l_comb,';')组中的listagg(按行排序)为l_comb dt1 out_output_string from (选择product_id|| ':‘rule_group as l_comb l_comb From dt1])。例如,我的预期输出- 1234:12;456:23
Fehler beim Start in Zeile : 1 in Befehl -
DECLARE
retval NUMBER;
BEGIN
MONITORING.PERFORM_CHECK(1000705, retval);
END;
Fehlerbericht -
ORA-06519: Aktive lokale Transaktion erkannt und Rollback durchgeführt
ORA-06512: in "RR_MONITORING.MONITORING_ACTIVITY_LOG", Zeile 13
ORA-06512: in
我正在两个数据库之间移动一些数据,并取得了很大的成功,但随后我在执行相同类型的查询时遇到了问题。
查询:
INSERT INTO INTERNET.WEBSECURITY@crmtest SELECT * FROM INTERNET.WEBSECURITY;
错误:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
你知道这可能是什么吗?
我试图通过dbms_output调试我的动态查询,但是查询字符串对于dbms_output buffer来说似乎太长了。
我得到了:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "SYS.DBMS_OUTPUT", line 148
ORA-06512: at line 1
你知道怎么增加缓冲区的大小吗?
PL/SQL变量的声明要求为类似于varchar2的类型设置长度:
declare
query varchar2(2000);
begin
for i in 1..100 loop
query := query || to_char(i);
end loop;
dbms_output.put_line(query);
end;
/
当产品需求发生变化时,我在陷阱中运行,循环范围变得更大(在我的示例中,设置范围为1..1000 ),我得到了错误:
ORA-06502: PL/SQL: : буфер символьных строк слишком маленький о
我想在SQL*Plus中执行一个游标,但是我得到了以下错误消息:
ORA-06502: PL/SQL:数值或值错误:字符串缓冲区太小ORA-06512:第11行
这是我的PL/SQL脚本:
DECLARE
CURSOR cr IS SELECT * FROM LOGICIEL;
unLog LOGICIEL%ROWTYPE;
nbrEtoiles NUMBER;
etoiles LOGICIEL.ETOILES%TYPE;
BEGIN
OPEN cr;
FETCH cr INTO unLog;
WHILE cr%FOUND LOO
我不明白我的代码的行为。为什么当我的代码中有select min(i.column_name) into value_min from EMPLOYEES;时,我会出错,但是如果我输入这个带有正确表名的palce字符串,我就会得到结果select min(SALARY) into value_min from EMPLOYEES;。
declare
cursor c_column_name is select column_name, data_type from USER_TAB_COLUMNS where table_name = 'EMPLOYEES';
/**
如何查看BLOB数据,是否可以将其导出为文本文件?我使用的是Oracle SQL developer 5.1。当我试着
select utl_raw.cast_to_varchar2(dbms_lob.substr(COLNAME))
from user_settings where <fieldname>=...
它返回以下错误:ORA-06502 PL/SQL : numeric or value error : raw variable length too long
BLOB包含XML格式的文本。
declare
l_tot number := 0;
begin
for i in 1..apex_application.g_f08.count loop
l_tot := l_tot + nvl(to_number(apex_application.g_f08(i)),0);
end loop;
if l_tot = nvl(to_number(:P21_TOTAL_PRICE),0) then
return true;
else
return false;
end if;
end;
在上面的代码中出现下面的错误
OR
在我的程序中,我得到了一个错误
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
下面是我的存储过程的示例代码。如何增加out_id参数的缓冲区大小
create or replace
PROCEDURE TEST_SRVC(in_id IN VARCHAR2, in_name IN VARCHAR2, OUT_Id OUT VARCHAR)
AS
--------------
-----------
END;
我试图通过将签名更改为:
create or replace
PROC
我用的是甲骨文10g
这是我的包装规格和身体。
CREATE OR REPLACE PACKAGE P_1 AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE USP_1(SP_NUM OUT VARCHAR2);
END P_1;
CREATE OR REPLACE PACKAGE BODY P_1 AS
PROCEDURE USP_1(SP_NUM OUT VARCHAR2) IS
BEGIN
SELECT to_char(concat(to_char(sysdate, 'yyyymm'),
我对PL/SQL非常陌生,在以下查询上遇到了问题:
set serveroutput on
DECLARE
result number(10):=0;
acc number(10);
BEGIN
acc:='&Insert_account:';
for i in 1..9 loop
result:=(result + (mod(acc,10)*i));
acc:=trunc(acc/10);
END LOOP;
if mod(result,11)
我通常是一名SQL Server开发人员,但是现在我使用的是一个使用Oracle的系统。我已经创建了一个新的过程,并且得到一个运行时错误。步骤如下:
CREATE OR REPLACE PROCEDURE CHK_LASTAPPTIME
(
LASTAPPTIME OUT VARCHAR2
)
IS
v_appappid varchar2(20) null;
v_lastapptime number null;
BEGIN
select max(APPID) into v_appappid from applicationtable;
sele
我正在使用oracle 12c,我需要知道listagg函数及其在另一个sql中的结果用法。我有一个名为TRACKING的表,它有一个列ID。我使用下面的sql作为ID列表。
SELECT LISTAGG (id, ',') WITHIN GROUP (ORDER BY id)
FROM TRACKING;
结果是: 2005900604,2005900605。现在,我尝试将此结果动态传递给另一个sql,如下所示:
select sum(col_a) from table_a where col_b in (2005900604,20059006
当我执行这个函数时,它会被编译,不会出现任何错误,但是在select语句中使用该函数时,它会产生错误。请帮帮我。select查询如下所示。
从对偶中选择数字格式(facval,5);
create or replace FUNCTION NumericFormat
(num IN decimal,
decimals IN int
)
RETURN VARCHAR2
IS
ReturnVal VARCHAR(50) ;
sPDecFormat VARCHAR(20) ;
sDecFormat VARCHAR(50) ;
counter INT;
BEGIN
co
有件奇怪的事我想弄明白
假设我们有这样的代码:
DECLARE
a varchar2(6);
BEGIN
a := '000001';
END;
这样做效果很好。没问题
现在我们有了这个:
DECLARE
a varchar2(6);
BEGIN
a := TO_CHAR(1, '000000');
END;
它不起作用:
ORA-06502: PL/SQL:数值或值错误:字符串缓冲区太小
为什么?
也许是nls_language出了问题?什么问题?什么解决方案?
谢谢
Oracle显示错误"ORA-06502: PL/SQL: numeric or value error: character to number error ORA-06512:第15行06502. 00000 - "PL/SQL: numeric or value error%s“
DECLARE
idnumber NUMBER(10);
initials VARCHAR2(100);
userid VARCHAR2(100);
old_initials VARCHAR2(100);
CURSOR cursor1 IS
SELECT s_first, s_last FRO