oracle中in和out用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中in和out用法相关的知识,希望对你有一定的参考价值。
参考技术A oracle过程中定义了in、out、inout三种参数模式,每个参数可以选择其一。1、in是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变;
2、out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用的过程;
3、inout模式表示高参数可以向该过程中传递值,也可将某个值传出去。
如何在oracle存储过程中执行动态sql语句
给你一个案例对这些,使用execute immediate就可以了,存储过程和语句块也是一样的,自己改一改,没区别的。
EXECUTE IMMEDIATE dynamic_string
[INTO define_variable[, define_variable]... | record]
[USING [IN | OUT | IN OUT] bind_argument [, [IN | OUT | IN OUT] bind_argument]...]
[RETURNING | RETURN INTO bind_argument[, bind_argument]...];
1, 操作 DDL语句,这也是动态 SQL的常用操作之一
如下所示使用动态 SQL创建 数据库表:
DECLARE
l_dync_sql VARCHAR2(100);
BEGIN
l_dync_sql := \'CREATE TABLE cux_dync_test(id NUMBER, creation_date DATE)\';
EXECUTE IMMEDIATE l_dync_sql;
END;
2,操作 DML语句,使用 USING子句可以按照顺序将输入的值绑定到变量,如果动 态SQL只有单行输出的话可以直接使用 INTO来接收输出值,如下所示。
DECLARE
l_dync_sql VARCHAR2(100);
l_person_name VARCHAR2(140);
l_age NUMBER;
BEGIN
l_dync_sql := \'SELECT person_name, age FROM cux_cursor_test WHERE person_id = :1\';
EXECUTE IMMEDIATE l_dync_sql
INTO l_person_name, l_age -- 使用into语句接手动态SQL的输出,如果输出多行则出错
USING 101; -- 给绑定变量赋值
dbms_output.put_line(\'Person Name: \' || l_person_name);
dbms_output.put_line(\'Age: \' || l_age);
END; 参考技术A CREATE OR REPLACE Procedure UP_ExecSqlProcForDS(strSql In Varchar2,cur_out Out sys_refcursor)AsBeginOpen cur_out ForstrSql;End;
以上是关于oracle中in和out用法的主要内容,如果未能解决你的问题,请参考以下文章
Oracle中“IN”和“IN OUT”CURSOR参数的区别
索引处缺少 IN 或 OUT 参数:: Java、Oracle 中的 1 个错误