标签: plsql

我们可以在PL/SQL中使用线程吗?

PL/SQL中是否有异步调用的功能?假设我在一个代码块中想多次调用一个过程,并且不会打扰何时以及该过程返回什么?

BEGIN
  myProc(1,100);
  myProc(101,200);
  myProc(201,300);
  ...
  ...

END;
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我不希望我的代码在执行之前等待myProc(1,100)完成处理(101,200)
谢谢.

oracle plsql asynchronous

24
推荐指数
6
解决办法
5万
查看次数

pl/sql存储过程:参数名称与列名称相同

我有这样的存储过程

procedure P_IssueUpdate
(
    Id in integer,
    ModifiedDate in date,
    Solution in varchar2
) AS
BEGIN
update T_Issue
Set
  ModifiedDate = ModifiedDate,
  Solution = Solution
where id = id;
END P_IssueUpdate;
Run Code Online (Sandbox Code Playgroud)

我的问题是参数名称与表列名称相同.有没有办法指示sql"="之后的值应该是参数而不是列?

谢谢你的帮助

oracle plsql stored-procedures

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

PL/SQL包无效

我有一个使用包的脚本(PKG_MY_PACKAGE).我将更改该包中的查询中的一些字段,然后重新编译它(我不更改或编译任何其他包).我运行脚本,我得到一个看起来像的错误

    ORA-04068: existing state of packages has been discarded
    ORA-04061: existing state of package body "USER3.PKG_MY_PACKAGE" has been invalidated
    ORA-04065: not executed, altered or dropped package body "USER3.PKG_MY_PACKAGE"
    ORA-06508: PL/SQL: could not find program unit being called: "USER3.PKG_MY_PACKAGE"
    ORA-06512: at line 34

我再次运行脚本(不更改系统中的任何其他内容)并且脚本成功执行.

我认为,在我编写之前,我执行了修复任何无效引用的脚本.这是100%可重复的,我使用这个脚本越多,它就越烦人.什么可能导致这种情况,以及会解决什么问题?

(oracle 10g,使用PL/SQL Developer 7)

oracle plsql

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

UTL_FILE.FOPEN()过程不接受目录路径?

我试图在存储在c:\驱动器名为vin1.txt的文件中写入并收到此错误.请提示!

> ERROR at line 1: ORA-29280: invalid
> directory path ORA-06512: at
> "SYS.UTL_FILE", line 18 ORA-06512: at
> "SYS.UTL_FILE", line 424 ORA-06512: at
> "SCOTT.SAL_STATUS", line 12 ORA-06512:
> at line 1
Run Code Online (Sandbox Code Playgroud)

这是代码

  create or replace procedure sal_status
   (
    p_file_dir IN varchar2,
    p_filename IN varchar2)
     IS  
    v_filehandle utl_file.file_type;
    cursor emp Is
        select * from employees
        order by department_id;
    v_dep_no departments.department_id%TYPE;
     begin
         v_filehandle :=utl_file.fopen(p_file_dir,p_filename,'w');--Opening a file
         utl_file.putf(v_filehandle,'SALARY REPORT :GENERATED ON %s\n',SYSDATE);
         utl_file.new_line(v_filehandle);
         for v_emp_rec IN emp LOOP
            v_dep_no :=v_emp_rec.department_id; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql oracle9i utl-file

24
推荐指数
3
解决办法
27万
查看次数

如何将数组列表拆分成相等的部分?

无论如何将ArrayList拆分成不同的部分而不知道它的大小直到运行时?我知道有一种叫做的方法:

list.subList(a,b);
Run Code Online (Sandbox Code Playgroud)

但我们需要明确提到盯着和结束范围的清单.我的问题是,我们得到一个包含帐号的arraylist,其中包含2000,4000个帐号的数据(编码时间内不会知道数字),我需要将此符号传递给PL/SQL的IN查询,如IN不支持超过1000个值,我试图分成多个块并将其发送到查询

注意:我不能使用像番石榴等任何外部库.. :(在这方面的任何指南表示赞赏.

java plsql oracle10g

24
推荐指数
5
解决办法
6万
查看次数

Oracle PL/SQL的单元测试框架?

我已经看到了为MS SQL Server提出的问题(和答案),尽管我还不知道有关Oracle和PL/SQL的问题.是否有适用于Oracle PL/SQL的xUnit样式测试框架?这些是什么?

sql oracle unit-testing plsql

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

批量插入Oracle数据库:哪个更好:FOR Cursor循环还是简单选择?

哪个是批量插入Oracle数据库的更好选择?一个FOR Cursor循环就像

DECLARE
   CURSOR C1 IS SELECT * FROM FOO;
BEGIN
   FOR C1_REC IN C1 LOOP
   INSERT INTO BAR(A,
                B,
                C)
          VALUES(C1.A,
                 C1.B,
                 C1.C);
   END LOOP;
END
Run Code Online (Sandbox Code Playgroud)

或简单的选择,如:

INSERT INTO BAR(A,
                B,
                C)
        (SELECT A,
                B,
                C
        FROM FOO);
Run Code Online (Sandbox Code Playgroud)

任何一个特定原因要么更好?

sql oracle plsql

23
推荐指数
4
解决办法
14万
查看次数

如何从执行动态SQL的Oracle PL/SQL匿名块返回结果集/游标?

我有这张桌子:

ALLITEMS
---------------
ItemId  | Areas
---------------
1       | EAST
2       | EAST
3       | SOUTH
4       | WEST
Run Code Online (Sandbox Code Playgroud)

DDL:

drop table allitems;

Create Table Allitems(ItemId Int,areas Varchar2(20));
Insert Into Allitems(Itemid,Areas) Values(1,'east');
Insert Into Allitems(ItemId,areas) Values(2,'east');
insert into allitems(ItemId,areas) values(3,'south');
insert into allitems(ItemId,areas) values(4,'east');
Run Code Online (Sandbox Code Playgroud)

在MSSQL中,要从动态SQL获取游标,我可以这样做:

DECLARE @v_sqlStatement VARCHAR(2000);
SET @v_Sqlstatement = 'SELECT * FROM ALLITEMS';
EXEC (@v_sqlStatement); --returns a resultset/cursor, just like calling SELECT 
Run Code Online (Sandbox Code Playgroud)

在Oracle中,我需要使用PL/SQL块:

SET AUTOPRINT ON;
DECLARE
 V_Sqlstatement Varchar2(2000);
 outputData SYS_REFCURSOR;
BEGIN
 V_Sqlstatement := 'SELECT * FROM ALLITEMS'; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

23
推荐指数
2
解决办法
13万
查看次数

Oracle包级别变量的范围

给定以下Oracle(10g)包定义:

create or replace PACKAGE "foo"
AS

   bar VARCHAR2(32000) := NULL;

END;
Run Code Online (Sandbox Code Playgroud)

酒吧的范围是什么?每个会话是否都有自己的foo.bar,或者跨会话是foo.bar全局?

你能从参考文件中引用章节和经文吗?

oracle plsql

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

如何获取包oracle内部所有过程的列表

我可以获取包中所有函数的名称吗?假设我有一个包PKG_OWA,我想列出包内的所有程序.

oracle plsql data-dictionary

23
推荐指数
4
解决办法
7万
查看次数