标签: plsqldeveloper

立即执行:遇到符号

我目前收到此错误 ORA-06550 PLS-00103 遇到符号“VERSION”...

任何人都可以帮我解决这个问题吗?非常感激!

declare
sql_stmnt VARCHAR(200);
lsparameter varchar(50);
lsparameterdata varchar(20);

begin
 sql_stmnt := 'SELECT parameter, parameter_data into lsparameter, lsparameterdata FROM MyTable WHERE parameter = 'version'';
 EXECUTE IMMEDIATE sql_stmnt;
end;
Run Code Online (Sandbox Code Playgroud)

我知道我已经在 where 子句中将参数设置为“version”。我想从 MyTable 检索参数和parameter_data 以检查版本,然后继续执行函数的其余部分。

提前致谢。

oracle select function execute-immediate plsqldeveloper

0
推荐指数
1
解决办法
9761
查看次数

PLS-00103:在预期以下情况之一时遇到符号“(”:

我正在尝试从报告页面到表单页面检索客户 id pk 列,每当用户使用 oracle applicationexpress 从报告页面移动到表单页面时,该列就会自动递增。所以我正在尝试创建一个返回 a 的触发器具有最后一行的值以及 +1 增量的数字。但是我收到这个错误

Error at line 8: PLS-00103: Encountered the symbol "(" when expecting one of the following:
   , from
6. INTO number
7. FROM (SELECT a.cust_id, max(cust_id) over() as max_pk FROM customer a)
8. WHERE cust_id = max_pk;
9. number:=(cust_id+1);
10. END;
Run Code Online (Sandbox Code Playgroud)

这是我的 PL/SQL 过程。

CREATE OR REPLACE FUNCTION cust_id_incremental(cust_id IN number)
RETURN number;


BEGIN

SELECT cust_id
INTO number
FROM (SELECT a.cust_id, max(cust_id) over() as max_pk FROM customer a)
WHERE cust_id …
Run Code Online (Sandbox Code Playgroud)

oracle plsql plsqldeveloper

0
推荐指数
1
解决办法
3万
查看次数

使用pl/sql从文本文件读取文件

我想读取文本文件,将其存储在变量中并在 pl/sql 中输出该变量。我正在使用以下代码,但出现错误:语句被忽略。

create or replace PROCEDURE blah
AS
DECLARE
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
BEGIN
f := UTL_FILE.FOPEN('C:\Users\s420105\Music','blahh.txt','R');
UTL_FILE.GET_LINE(f,s);
UTL_FILE.FCLOSE(f);
dbms_output.put_line(s);
END;
Run Code Online (Sandbox Code Playgroud)

我不确定 UTL 权限,但我想如果是由于 UTL 权限,它会抛出不同的错误。这

oracle plsql oracle11g plsqldeveloper

0
推荐指数
1
解决办法
2万
查看次数

在 PL/SQL Developer 中测试函数

这是我的功能:

FUNCTION GET(V_IN IN NUMBER) RETURN VARCHAR2 AS
    V_OUT VARCHAR2(1000);
BEGIN
    function body
END;
Run Code Online (Sandbox Code Playgroud)

当我右键单击该函数并单击测试时,我得到以下信息:

begin
  -- Call the function
  :result := pkg.get(V_IN => :V_IN);
end;
Run Code Online (Sandbox Code Playgroud)

如何替换该变量 V_IN 的值?我需要测试一个数字,比如 940。

当我尝试代码时:

declare
  r varchar2(2000);
begin
  -- Call the function
  r := pkg.get(940);
end;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ORA-01036: illegal variable name/number
Run Code Online (Sandbox Code Playgroud)

您能建议调用此函数的各种方法吗?

PS:使用的工具:PL/SQL Developer Allround Automations。版本8.0.1.1502

Oracle 数据库 11g 企业版

oracle plsql plsqldeveloper

0
推荐指数
1
解决办法
2万
查看次数

删除重复项触发 Oracle

如果我使用相同的 cod_regista 插入多于一行,它会创建重复项,我该如何消除它们?每个值我只需要一个记录

CREATE OR REPLACE TRIGGER piazzetta_trg
BEFORE INSERT OR UPDATE
ON regia_piazzetta
FOR EACH ROW
BEGIN
IF INSERTING THEN
     FOR a IN(SELECT cod_regista, SUM(costo_produzione) as tot
              FROM regia_piazzetta
              GROUP BY cod_regista)
        LOOP     
            INSERT INTO piazzetta_tot VALUES (a.cod_regista, a.tot);
        END LOOP;
    UPDATE piazzetta_tot SET costo_totale = costo_totale + :new.costo_produzione WHERE piazzetta_tot.id_regista = :new.cod_regista;
END IF;
IF UPDATING THEN 
    UPDATE piazzetta_tot SET costo_totale = costo_totale+(:new.costo_produzione - :old.costo_produzione) WHERE piazzetta_tot.id_regista = :new.cod_regista;
  END IF;
END;
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql plsqldeveloper oracle-sqldeveloper

0
推荐指数
1
解决办法
67
查看次数

如何使用私有过程创建 Oracle 包?

我正在创建一个 Oracle 包,我想知道是否可以将 prcedure 设为私有,这是我的示例代码:

CREATE OR REPLACE PACKAGE MYSCHEMA.MyPackage AS
 PROCEDURE MyProcedureA(outputParam OUT VARCHAR2);
 PROCEDURE MyProcedureB(inputParam IN VARCHAR2);
END MyPackage;

/

CREATE OR REPLACE PACKAGE BODY MYSCHEMA.MyPackage AS

 PROCEDURE MyProcedureA(outputParam OUT VARCHAR2) AS
  myHello VARCHAR2(1000) := 'Hello';
 BEGIN
  MyProcedureB(myHello);
  outputParam := 'OK';
 END MyProcedureA;

 PROCEDURE MyProcedureB(inputParam IN VARCHAR2) AS
  myWorld VARCHAR2(1000) := 'World';
 BEGIN
  dbms_output.put_line(inputParam || myWorld);
 END MyProcedureB;

END MyPackage;
Run Code Online (Sandbox Code Playgroud)

是否可以将 MyProcedureB 设为“私有”,我的意思是它只能由包 (MyProcedureA) 中的其他程序调用?

sql oracle plsql plsqldeveloper plsql-package

0
推荐指数
1
解决办法
33
查看次数

PL/SQL 日期时间更新集结果时间为 00:00:00

我正在尝试使用如下 SQL 设置比 end_ts 日期时间少一秒的日期时间

UPDATE Table1 SET 
          UPDTD_DT=(SELECT TO_DATE(END_TS-1/(24*60*60),'DD/MM/YYYY HH24:MI:SS')
          FROM View1) WHERE id = '123';
Run Code Online (Sandbox Code Playgroud)

但运行此更新后,日期时间为 00:00:00。我显示并检查了 TO_DATE(END_TS-1/(24 60 60),'DD/MM/YYYY HH24:MI:SS') 看起来不错。

SELECT TO_DATE(END_TS-1/(24*60*60),'DD/MM/YYYY HH24:MI:SS') FROM View1 is 25/03/2022 10:14:44
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激。

sql oracle plsql plsqldeveloper

0
推荐指数
1
解决办法
114
查看次数

从表中的两列中选择相同的数据,并使用一个sql语句显示所有数据

我是一个sql领域的新人,我有一些问题.

如下表格

Table Name:EM

ID    name    Birth   High
1     Tom     11/23   65
2     Mary    11/23   65
3     Bill    03/02   55
4     Liny    01/08   45
5     Kevin   05/16   50
6     Lee     05/16   50
Run Code Online (Sandbox Code Playgroud)

但我只需要下面的数据

ID    name    Birth   High
1     Tom     11/23   65
2     Mary    11/23   65
3     Kevin   05/16   50
4     Lee     05/16   50
Run Code Online (Sandbox Code Playgroud)

我用傻瓜sql来获取这样的数据

select * from em where birth = '11/23' and high = '65';
select * from em where birth = '05/16' and high = '50';
Run Code Online (Sandbox Code Playgroud)

请教我如何在一个sql语句中得到结果,非常感谢.

sql plsql oracle10g plsqldeveloper

-1
推荐指数
1
解决办法
1046
查看次数

另一个 SELECT 中的 SYSDATE FROM DUAL

我的选择有时间问题。DB 中的时间与系统时间不同,所以我想我需要使用SELECT SYSDATE FROM DUAL但它在另一个选择中不起作用。我使用 PL/SQL 开发人员。

SELECT t.something1,
       ROUND((TRUNC(SELECT SYSDATE FROM DUAL) - 1 + 2),1) AS NAME
FROM customers t
WHERE t.something1 = ROUND((TRUNC(SELECT SYSDATE FROM DUAL) - 1 + 2),1);
Run Code Online (Sandbox Code Playgroud)

我也尝试声明新变量,但我总是收到错误消息。

DECLARE
day DATE
SELECT SYSDATE
INTO day
FROM DUAL
SELECT t.something1,
       ROUND((TRUNC(day)- 1 + 2),1) AS NAME
FROM customers t
WHERE t.something1 = ROUND((TRUNC(day) - 1 + 2),1);
Run Code Online (Sandbox Code Playgroud)

sql plsqldeveloper

-2
推荐指数
1
解决办法
3万
查看次数

sql错误 - 唯一约束

我有一个像这样的数据迁移脚本.

Data_migration.sql

它的内容是


insert into table1 select * from old_schema.table1;
commit;
insert into table2 select * from old_schema.table2;
commit;
Run Code Online (Sandbox Code Playgroud)

并且在执行脚本时table1pk_productname约束

SQL> @ "data_migration.sql" 
Run Code Online (Sandbox Code Playgroud)

我将获得一个唯一的约束(pk_productname)违规.但是当我执行单独的sql语句时,我不会得到任何错误.这背后有任何原因.以及如何解决这个问题.

sql oracle plsql primary-key plsqldeveloper

-3
推荐指数
1
解决办法
412
查看次数

不存在和减去

任何人都可以告诉我SQL中NOT EXIST和MINUS运算符之间的差异吗?我何时可以使用?哪一个可以提供更好的性能?

sql plsql oracle10g oracle11g plsqldeveloper

-3
推荐指数
1
解决办法
42
查看次数

我们如何逐行打印字符并将其保存到PLSQL中的csv或文本文件中

  1. 宣布
  2. V_NUMBER NUMBER:= 23;
  3. 开始
  4. V_NUMBER:= V_NUMBER + 1;
  5. 退出时V_NUMBER:= 25;
  6. - 用于打印和将行嵌套到CSV或TEXT文件中的一些功能.
  7. 结束循环;
  8. 承诺;
  9. 结束;

sql plsql plsqldeveloper

-5
推荐指数
1
解决办法
485
查看次数