小编Wil*_*son的帖子

在 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万
查看次数

创建没有数据的物化视图

我需要创建test没有数据的物化视图,然后我将创建一个脚本来第一次将数据插入到这个物化视图中。在此之后,我将每晚运行物化视图刷新以刷新视图。

由于我不是物化视图的专家,任何人都可以在这里帮助我。

目前我有脚本来创建物化视图,该视图运行 2 小时,处理 2000 万行。

create materialize view

oracle plsql

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

将多行插入表中 - 出现错误 ORA-00933:SQL 命令未正确结束

create table employee (      
  employee_id number (5), 
  first_name varchar2(100), 
  last_name varchar2(100), 
  salary number (10), 
  department_id number(5), 
  hire_date date,
  constraint pk_emp primary key (employee_id) 
  )

  insert into employee (employee_id, last_name, salary )     
   values
   (129, 'khaj', 19000),
   (130, 'ravi', 20000);
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

oracle sql-insert

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

PL SQL select count(*) 给出错误答案

我有一个由 3 列组成的表:系统、模块和块。表被填充在一个接受系统、模块和块的过程中,然后它检查三重奏是否在表中:

select count(*) into any_rows_found from logs_table llt
where system=llt.system and module=llt.module and block=llt.block;
Run Code Online (Sandbox Code Playgroud)

如果表中已有包含这三个值的行,则不要将它们写入表中,如果没有,则将它们写入。问题是,如果表具有值 'system=a module=b block=c' 并且我查询值 'does the table has system=a module=d block=e' 它返回 yes,或者,准确地说,any_rows_found=1。仅当我发送表中没有其值之一的三重奏组时才显示值 1,例如:'system=g module=h and block=i'。我的查询有什么问题?

sql oracle

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

完整提示的区别

我有以下加入

SELECT
    *
FROM
    table1   t1
    JOIN table2   t2 ON t2.col = t1.col
Run Code Online (Sandbox Code Playgroud)

下面的有什么区别?

SELECT /*+ FULL(t1) */
    *
FROM
    table1   t1
    JOIN table2   t2 ON t2.col = t1.col
Run Code Online (Sandbox Code Playgroud)
SELECT /*+ FULL(t1) FULL(t2) */
    *
FROM
    table1   t1
    JOIN table2   t2 ON t2.col = t1.col
Run Code Online (Sandbox Code Playgroud)

sql oracle

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

将天/小时/分钟和月份添加到时间戳

有没有办法将天数小时数月和分钟添加到时间戳中,我想将其值插入到变量中

我有想要添加到时间戳的分钟、小时、天和月的单独变量

时间戳格式是这样的“04-FEB-21 10.25.12.013000 AM”

我尝试使用 SELECT TO_TIMESTAMP(datecreated,'dd-mon-yyyy hh.mi.ss AM') + daysvar into duedate FROM dual; 但它返回错误 AM/AM 或 PM/PM required

daysvar 包含要添加到时间戳的天数

谢谢!

sql oracle plsql

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

使用提示优化 Oracle 查询

我有一个复杂的 Oracle 查询。

SELECT
    r3.object_id
FROM
    nc_references r
    INNER JOIN nc_objects     o ON r.object_id = o.object_id
                               AND o.object_class_id = 90000330 /* Work Item */
    INNER JOIN nc_params      p ON p.object_id = o.object_id
                              AND p.attr_id = 90100070 /* State */  AND p.list_value_id IN ( 90100071 /* Ready */, 90100072 /* Active */ )
    INNER JOIN nc_po_actions  poa ON poa.manual_task_id = o.object_id
    INNER JOIN nc_po_tasks    pot ON pot.task_id = poa.task_id
    INNER JOIN nc_references  r1 ON r1.object_id = pot.container_id
                                   AND r1.attr_id = 9145923960313063683 …
Run Code Online (Sandbox Code Playgroud)

sql oracle query-hints oracle11g

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