我有一个根据特定日期检索数据的sql,我的Java应用程序调用plsql - Oracle来执行此操作。
新的请求是根据在屏幕上选择的多个日期来获取数据。
我尝试将这些日期格式化为逗号分隔的字符串,并将其作为pl/SQL的varchar输入参数‘i_date’进行传递。在Pl/SQL端,我尝试对where条件使用IN子句,但得到一个错误,即I_dates是无效的标识符。
问:我尝试使用多个日期条件单独运行sql,它工作得很好。
Select * from table1 where date in (‘2019-05-01’,‘2019-06-01’)工作正常。
但是plsql中带有日期输入参数
我正在尝试在Oracle express版编辑器中运行一个程序。当我执行这个程序时,我得到一个错误
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
有没有人能帮我理解为什么会出现错误,以及如何修复代码?
VARIABLE gvn_total_salary NUMBER;
DECLARE
vn_base_salary NUMBER := 3000;
vn_bonus NUMBER := 1000;
BEGIN
:gvn_total_salary := vn_base_sal
我想在Python语言中通过cx_oracle执行一条Oracle PL/SQL语句。代码如下所示:
db = cx_Oracle.connect(user, pass, dsn_tns)
cursor = db.cursor()
...
sel = """
DECLARE
c NUMBER := 0.2;
mn NUMBER := 1.5;
res NUMBER;
BEGIN
res := c+mn/6.;
END;
"""
try:
cursor.execute(sel)
print "PL/SQ
我必须调试存储过程,其中包含一些SQL查询。其中之一包含一个错误。因此,我需要使用其他窗口中的参数来执行这个SQL查询。我发现了下一个可以帮助我的查询:
select v.SQL_TEXT
from v$sql v
不幸的是,这个字段受到1Kb的限制。在我的例子中,我有相当大的SQL查询,而Oracle会截断它。如何记录已执行的查询?我使用PL/SQL Developer 10和Oracle 9i
我刚接触oracle PL/SQL,并编写了一段用于绑定变量的代码。我不清楚绑定变量是如何工作的,以及使用子句的目的是什么。
我已经写了一段代码来理解绑定变量,但是它失败了。
CREATE OR REPLACE FUNCTION updNVAl(col IN VARCHAR2,val IN VARCHAR2)
RETURN INTEGER
IS
BEGIN
EXECUTE IMMEDIATE
'UPDATE emp SET '||col||' =:the_value' USING col,val;
return SQL%ROWCO
在Oracle 10g (pl/sql)中运行以下代码时
DECLARE
A NUMBER;
B NUMBER;
BEGIN:
A:=&N;
B:=&M;
IF (A>B)
DBMS_OUTPUT.PUT_LINE('THE MAXIMUM OF TWO NUMBER IS:' || TO_CHAR(A));
ELSE
DBMS_OUTPUT.PUT_LINE('THE MAXIMUM OF TWO NUMBERS IS:' || TO_CHAR(B));
END IF;
EN
我试图通过Oracle 11g中的PL/SQL调用外部程序。是共享库的C代码,是相应的PL/SQL包装器。
让我们假设我想执行Unix的ps -A命令。我得到的是:
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as sys@orcl AS SYSDBA
SQL> set serveroutput on;
SQL> exec osutil.RunOsCmd('ps -A');
ERROR, bad command or no output ret
我收到了一个用户的电子邮件,当他看到以下错误输出时,他使用我们的网站。
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
我们有一个使用oracle程序发送电子邮件的应用程序。过程接受一些参数作为参数。如果我将22kb的数据作为CLOB发送到过程,它将无法发送电子邮件,并且我看到的错误是- ORA-23620: bind value size too large for PL/SQL CALL operation。
如果我在oracle客户端中EXEC相同的过程,它会发送电子邮件。这似乎是OCI8的问题。
我该怎么解决它呢?
在Oracle数据库10g中,是否可以在包或过程之外创建关联数组类型?我希望能够这样做,这样我就可以在另一个类型中引用这个关联数组类型。例如:
create type my_type_map is table of varchar2(10) index by varchar2(10);
create type my_other_type as object (
id number(15),
member procedure initialize(p_my_type_map my_type_map)
) not instantiable not final;
我得到的错误
我们在Oracle表定义(DDL)和一个PL/SQL脚本中遇到了一个特殊的问题。
问题是,表中有一个更改,从varchar(20)更改为varchar(30),但是,这种更改并没有在我们的一个使用数据的PL/SQL脚本中得到积极的反映,该数据仍然是varchar(20),导致在我们的一个回归测试期间出现ORA-06502: PL/SQL: numeric or value error错误。
我想在这里向Oracle和数据库专家寻求建议,您是否在过去遇到过这样的情况,即表DDL发生了更改,并且没有反映在PL/SQL中,以及您如何处理这种差距。
我知道一个简单的方法是某种形式的强制或书面工作,但是
我能够在中运行PL/SQL过程吗?
PL/SQL过程
create or replace PROCEDURE greetings
AS
BEGIN
dbms_output.put_line('Hello World!');
END;
这里是DB日志:
Connecting to the database Oracle_XXXX.
Hello World!
Process exited.
Disconnecting from the database Oracle_XXXX.
但是我无法调试PL/SQL过程并获得错误日志?
这里是错误DB日志:
Connectin
因此,我正在为oracle编写一个函数,但是我看到了错误,它们说sql语句被忽略了,所以表达式丢失了。
职能:
CREATE OR REPLACE FUNCTION getQueueNumber
(student IN VARCHAR,course IN CHAR)
RETURN INT
IS
queuePosition INT;
date TIMESTAMP;
BEGIN
SELECT waitingDate INTO date
FROM WaitingCourseStudent wcs
WHERE wcs.student=st
下载Oracle XE和Oracle SQL Developer到我的家用计算机(Windows)学习PL/SQL。我在工作中使用PL/SQL Developer,但从未设置它。
我下载了Oracle SQL开发人员,下载过程进行得很顺利。让它在应用程序视图中工作,但是当尝试运行sqldeveloper.sh时,我会在屏幕上显示错误。该错误如下:
The JDK 'C:Program' is not a valid JDK
The JDK specified by the SetJavaHome directive in
/c/../../.sqldeveloper/21.1
我在使用jdbcs callablestatement. This is the error I'm getting: pl/sql : ORA-00933: SQL命令未正确结束时执行PL/SQL语句时遇到困难。`
声明是这样的:
DECLARE
BEGIN
IF ('XXX' <> 'XXX')
THEN
update XXX set XXX=1 where XXX='XXX' and XXX like 'XXX'
END IF;
END;
/
它在Oracle sql developer中
什么是绕过PL/ Oracle保留字约束值声明的最佳方法?我意识到,对于实际的查询,约束与替代可能是可以接受的替代方案,但是Oracle /SQL怎么办?例如,我希望将一个数值变量声明为"num",在Oracle PL查询中构造如下:
SET SERVEROUTPUT ON
declare
num number;
begin
num := 10;
DBMS_OUTPUT.put_line('The value of num ' || num);
end;
下面的PL/SQL块按预期失败:
SQL> declare
2 i int;
3 begin
4 i := dbms_sql.open_cursor;
5 dbms_sql.parse(i,'begin dontexist; dbms_output.put(''a''); end;',1);
6 dbms_sql.close_cursor(i);
7 end;
8 /
declare
*
FOUT in regel 1:
.ORA-06550: Regel 1, kolom 7:
P