繁体   English   中英

游标加载了动态SQL

Cursor loaded with dynamic SQL

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在过程中使用动态SQL加载的游标有问题。 我的查询包含日期,并且出现此错误:

ORA-00932:数据类型不一致; 预产期 ; 得到:NUMBER

这是我的程序:

create or replace procedure EMP_CURSOR (
    p_date in date,
    p_schema in varchar2
) is

    c_emp sys_refcursor;

begin

    open c_emp for
        'select ID, NAME
        from ' || DBMS_ASSERT.schema_name(p_schema) || '.EMP
        where DATE_MAJ >= ' || p_date;

    EMP (c_emp);

    exception
        when others then
            DBMS_OUTPUT.put_line(SQLERRM);

end;

这就是我所说的:

exec EMP_CURSOR(to_date('01/01/2015','dd/MM/yyyy'),'TEST');

我不知道如何传递动态查询的日期。 当我删除动态部分并将模式名称放入查询中时,它可以正常工作。

1 个回复

Oracle根据您的NLS_DATE_FORMAT隐式将p_date转换为字符串,因为您将其链接为字符串。 您需要根据文档使用绑定变量

open c_emp for
 'select ID, NAME
    from ' || DBMS_ASSERT.schema_name(p_schema) || '.EMP
    where DATE_MAJ >= :1' using p_date;

这也为您提供了更多防止SQL注入的保护。

1 游标中的动态SQL

下面的动态sql根据查询的输出更改表和创建列是错误的。 查询: 错误: PLS-00457:表达式必须是SQL类型 ...

3 TSQL。 游标中的动态SQL

‌‌‌请我真的需要您的帮助! 我想在游标中创建一个动态SQL。 我想用变量@Database替换数据库DB1我有很多错误。 我不知道为什么! ` ` ...

4 如何使用动态SQL声明游标?

我想使用下面的动态SQL声明一个游标,但是当我尝试在存储的proc中对其进行编译时,下面的SQL失败。 有一个更好的方法吗? 谢谢。 错误味精:- PS:-我声明了变量名,并且在构建游标之前已经设置了值。 ...

5 在动态SQL中声明游标

存储过程中的这段代码已经使用了多年,现在在OPEN行上,我得到一个名称为...的游标不存在 。 sp_executesql中是否发生了某些更改,可能导致此中断? 还有另一种方法(动态SQL的需要是因为@Types参数是作为IN子句的预格式化字符串传递的?) ...

6 Oracle:SQL动态游标语句

我有一个动态的临时表,如下所示。 假设的表名: TB_EMP_TEMP_TABLE 上面的数据作为Cursor(Emp_cursor)检索,我需要根据游标数据按如下方式构造一个动态SQL查询。 预期产量: 我还没有广泛研究PLSQL / Cursor概念。 如何循环 ...

7 动态SQL中具有动态表名称的ORACLE REF游标

我们有一个方案,其中表名应动态传递给REF游标。 表名是在另一个动态sql内构建的,而oracle无法正确构建SQL。 这是PLSQL块 运行该块后,我们会收到“表或视图不存在”错误,这是来自GetCursor过程的,该过程使用传入的表名参数动态构建了游标。 因为它已经在动态块中,所以ORACL ...

8 动态游标

我使用游标声明: 我用了: 执行此操作后,我能够检索到roll = 1的所有记录。 现在,我需要检索组的记录(可能通过游标) ,就像: 但是IN子句中的值仅在运行时才知道。 我应该怎么做? 也就是说,有什么方法可以将参数分配给游标的WHERE子句? 我尝试 ...

9 如何在Oracle中将动态SQL执行到游标中?

我在存储过程中将动态sql语句执行到sys_refcursor中时遇到问题。 我查看了文档,并认为我可以正确构建过程,但是我仍然不知道为什么会发生错误。 请看下面我创建的内容: 当我要调用该过程时,会发生错误。 我收到消息: ORA-20000:ORU-10027:缓冲 ...

10 如何在Oracle中描述与动态SQL相关的引用游标?

这是我的第一个(编辑过的)stackoverflow问题,所以请耐心等待。 在Oracle 11g中,我需要通过dblink描述/询问从另一个数据库上的过程调用返回的引用游标的基础列,其中实际的SQL并不总是“显式”,但有时是动态生成的。 例如: 如果另一个数据库上的myPr ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM