当前位置:首页 » 存储配置 » oracle存储过程变量输出

oracle存储过程变量输出

发布时间: 2023-02-18 15:04:56

❶ oracle存储过程如何输出信息

可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出。

编写存储过程:

create or replace procere test_pro(in_num number)

as

M number;

begin

M := in_num;

if 0 < M then

dbms_output.put_line('输出sql语句1');

elsif M < 3 then

dbms_output.put_line('输出SQL语句2');

else

dbms_output.put_line('nothing');

end if;

end;

(1)oracle存储过程变量输出扩展阅读;

存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。

❷ oracle存储过程导出数据到文件数据出现

在存储过程中,我们经常会使用dbms_output来输出一些调试信息到控制台,方便查看。在使用PLSQL DEV的过程中,经常会遇到缓冲区太小的情况,如果你要显示的内容比较多的话。这个时候我们可以使用oracle提供的UTL_FILE包来实现将这些信息输出到一个文本文件中。

操作说明
创建一个目录(需要管理员权限)
注意:这里创建的目录是创建在oracle服务器上,在执行上述SQL后,需要手动建立相关目录,否则使用时会报错。
授权给使用存储过程的用户
存储过程中使用

❸ plsql调用oracle存储过程有输入参数和输出参数 sql语句怎么写如题 谢谢了

假设第一个参数为in参数,每二个参数为out参数:
variable
x
number;
//定义一个绑定变量
exec
过程(1,:x)
//1为输入参数,x为输出参数,过程执行后x就得到输出值了。
print
x
//看结果

❹ 如何把oracle 存储过程 输出到文本

分几个步骤
1,创建输出路径,比如你要在c盘test目录下输出,你就先要建立好这个test路径

2,sqlplus下以sysdba登录,执行以下语句

3,create or replace directory TMP as 'c: est'

4,grant read,write on directory TMP to 你要生成文件的用户;

5,alter system set utl_file_dir='c: est' scope=spfile;
以上步骤执行完,需要重启数据库

6,最重要的一步开始了,创建存储过程

createorreplacePROCEDURESP_OUTPUT
is
file_handleutl_file.file_type;
Write_contentVARCHAR2(1024);
Write_file_nameVARCHAR2(50);
v_idint;
v_formvarchar2(10);
cursorcur_sp_out
is
selectid,formfroma;
begin
opencur_sp_out;
loop
fetchcur_sp_outintov_id,v_form;
exitwhencur_sp_out%notfound;
write_file_name:=to_char(SYSDATE,'MMDD')||'.txt'
file_handle:=utl_file.fopen('TMP',write_file_name,'a');
write_content:=v_id||''||v_form;
--writefile
IFutl_file.is_open(file_handle)THEN
utl_file.put_line(file_handle,write_content);
ENDIF;
--closefile
utl_file.fclose(file_handle);
endloop;
closecur_sp_out;
end;


我建立了一个跟你一样的测试表,数据如下
createtablea(idint,
formvarchar2(10));

insertintoavalues(1,'你好');
insertintoavalues(2,'你很好');


然后执行存储过程
begin
SP_OUTPUT;
end;


执行完毕后,你在c盘test路径下会发现已经有新文件生成


文件内容


存储过程的话,如果表名和字段名跟你一致的话,你无须修改

❺ oci 调用oracle 存储过程 中取出输出变量的 问题,求亲们解决

公共静态的CallableStatement callprol2(SQL字符串,字符串输入参数,整型输出参数[]){
?康恩= getConn();
?尝试{
?CS = conn.prepareCall(SQL);
?如果(inparameters! = NULL){
??为(int i = 0;我<inparameters.length,我+ +){
??cs.setObject(i +1,输入参数[I]);
???
??}
??
?}
??/ /
??/ /输出参数赋值
?如果(outparameters! = NULL){
??为(int i = 0;我<outparameters.length,我+ +){
??cs.registerOutParameter(inparameters.length +1 + I,输出参数[I]);
???
??}
??
?} Cs.execute();
?}(SQLException的E){
??/ / TODO自动生成的catch块
??e.printStackTrace();
??抛出新的RuntimeException(e.getMessage());
?}

?返回CS;


?}
我唯一??的Java版本

❻ 关于调用带输出参数的oracle存储过程

可以通过以下方式来进行带参数存储过程执行。

SQL>createorreplaceproceresp_pro10
2(spnoinnumber,spnameoutvarchar2)is
3begin
4select'ename'intospnamefromal;
5end;
6/

过程已创建。

SQL>setserveroutputon
SQL>DECLARE
2spnonumber;
3spnamevarchar2(10);
4BEGIN
5sp_pro10(spno,spname);
6
7dbms_output.put_line(spname);
8END;
9/
ename

PL/SQL过程已成功完成。

❼ oracle存储过程基本语法

一:存储过程

创建存储过程,需要有CREATE PROCEDURE或CREATE ANY PROCEDURE的系统权限   

删除存储过程,是过程的创建者或者拥有DROP ANY PROCEDURE系统权限 

修改存储过程,则只能是过程的创建者或者拥有ALTER ANY PROCEDURE系统权限的人

执行(或调用)存储过程,是过程的创建者或是拥有EXECUTE ANY PROCEDURE系统权限的人或是被拥有者授予EXECUTE权限的人

1:语法

 1)创建

CREATE[ORREPLACE]PROCEDURE存储过程名[(参数[IN|OUT|INOUT] 数据类型...)]

{AS|IS}

[说明部分]

BEGIN

可执行部分

[EXCEPTION

错误处理部分]

END[过程名];

 说明:

   OR REPLACE 表示如果存在就覆盖存储过程

   参数有三种形式:IN、OUT和IN OUT。则默认为IN。

  关键字AS也可以写成IS,后跟过程的说明部分,可以在此定义过程的局部变量。

2)删除存储过程:

DROP PROCEDURE 存储过程名;

3)修改存储过程:

      ALTER PROCEDURE 存储过程名 COMPILE; 

4)执行存储过程

      EXECUTE 模式名.存储过程名[(参数...)]; 

     或

       BEGIN 

模式名.存储过程名[(参数...)];

END;

另外:参数可以是变量、常量或表达式

 要其它用户执行存储过程须要给其它用户授权

GRANT EXECUTE ON 存储过程名 TO 用户名

 2:参数说明

IN 定义一个输入参数变量,用于传递参数给存储过程

OUT 定义一个输出参数变量,用于从存储过程获取数据

IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能

 1)参数名 IN 数据类型 DEFAULT 值;

          定义一个输入参数变量,用于传递参数给存储过程。

          可以是常量、有值变量或表达式

          DEFAULT 关键字为可选项,用来设定参数的默认值。如果在调用存储过程时不指明参数,则参数变量取默认值

          在存储过程中,输入变量接收主程序传递的值,但不能对其进行赋值。

2)参数名 OUT 数据类型;

          定义一个输出参数变量,用于从存储过程获取数据,即变量从存储过程中返回值给主程序。

          在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。

          在存储过程中,参数变量只能被赋值而不能将其用于赋值,而且必须给输出变量至少赋值一次。

3)参数名 IN OUT 数据类型 DEFAULT 值; 

          定义一个输入、输出参数变量,兼有以上两者的功能。

          在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。

          DEFAULT 关键字为可选项,用来设定参数的默认值。

          在存储过程中,变量接收主程序传递的值,同时可以参加赋值运算,也可以对其进行赋值。在存储过程中必须给变量至少赋值一次。

补充:如果省略IN、OUT或IN OUT,则默认模式是IN。 

          调用它时参数个数与位置可以不一致,用以下形式调用:

EXECUTE CHANGE_SALARY(P_RAISE=>80,P_EMPNO=>7788);  //=>运算符左侧是参数名,右侧是参数表达式

 二:函数

创建函数,需要有CREATE PROCEDURE或CREATE ANY PROCEDURE的系统权限

删除函数,需要是函数的创建者或者是拥有DROP ANY PROCEDURE系统权限的人

修改函数,需要是函数的创建者或者拥有ALTER ANY PROCEDURE系统权限的人

执行函数,需要是函数的创建者或拥有EXECUTE ANY PROCEDURE系统权限的人

1:语法

1)创建:

CREATE[ORREPLACE]FUNCTION函数名[(参数[IN] 数据类型...)]

RETURN数据类型

{AS|IS}

[说明部分]

BEGIN

可执行部分

RETURN(表达式)

[EXCEPTION

    错误处理部分]

END[函数名];

 说明:

     参数是可选的,但只能是IN类型(IN关键字可以省略)。

     在定义部分的RETURN 数据类型,用来表示函数的数据类型,也就是返回值的类型,不可省略。

     在可执行部分的RETURN(表达式),用来生成函数的返回值,其表达式的类型应该和定义部分说明的函数返回值的数据类型一致。在函数的执行部分可以有多个RETURN语句,但只有一个RETURN语句会被执行,一旦执行了RETURN语句,则函数结束并返回调用环境。 

2)删除

      DROP FUNCTION 函数名;

3)修改

      ALTER PROCEDURE 函数名 COMPILE;

4)执行

      变量名:=函数名(...) 

三:对存储过程 和 函数的查看(可以通过对数据字典【USER_SOURCE】的访问来查询存储过程或函数的有关信息)

 1:查询某个存储过程序内容

select TEXT from user_source WHERE NAME='存储过程名';

 2:查看数据字殿

DESCRIBE USER_SOURCE ; //命令行中

 3:查看存储过程的参数

DESCRIBE say_hello; //后面是过程名

 4:查看发生编辑错误

SHOW ERRORS ;

 5:查询一个存储过程或函数是否是有效状态(即编译成功)

SELECT STATUS FROM USER_OBJECTS WHERE OBJECT_NAME='过程名';//注意大小写

VALID表示该存储过程有效(即通过编译),INVALID表示存储过程无效或需要重新编译。它的状态会改变,这与它依赖外部表(表删除修改等操作)有关系

6:查看存储过程与表的依赖关系

SELECT REFERENCED_NAME,REFERENCED_TYPE FROM USER_DEPENDENCIES WHERE NAME='SAY_HELLO';

 说明

NAME为实体名,TYPE为实体类型,REFERENCED_OWNER为涉及到的实体拥有者账户,REFERENCED_NAME为涉及到的实体名,REFERENCED_TYPE 为涉及到的实体类型。

问题:

如果一个用户A被授予执行属于用户B的一个存储过程的权限,在用户B的存储过程中,访问到用户C的表,用户B被授予访问用户C的表的权限,但用户A没有被授予访问用户C表的权限,那么用户A调用用户B的存储过程是失败的还是成功的呢?答案是成功的。

❽ oracle 存储过程输出参数咋样放在一个变量里面。 getspacename是一个存储过程,只有一个输出参数,

请参考以下代码:
create or replace procere getspacename
(out_value out varchar2)
as
begin
--添加你的代码....
out_value:= 给该变量赋值;
end;

调用该存储过程:
SQL> var c varchar2(10);
SQL> exec getspacename(:c)

希望对你有所帮助!

❾ oracle存储过程中怎么输出变量的值

--代码示例与讲解(SQLServer下代码也是类似)
DECLARE@LSINT--定义一个变量@LS
SET@LS=8--让@LS等于8
SELECT@LSAStLS--选择变量@LS作为tLS(即输出)列出

热点内容
初始化java 发布:2025-07-13 05:29:45 浏览:949
什么笔记本配置够玩守望先锋 发布:2025-07-13 05:29:45 浏览:396
c数据缓存 发布:2025-07-13 05:27:32 浏览:312
steam修改密码也为什么登不进去 发布:2025-07-13 05:22:00 浏览:385
安卓手机哪个文件夹能删掉 发布:2025-07-13 05:21:53 浏览:130
android44虚拟按键 发布:2025-07-13 05:15:28 浏览:794
pythonftp自动下载 发布:2025-07-13 05:13:06 浏览:916
python定义字符串变量 发布:2025-07-13 05:08:18 浏览:815
存储涉黄违法 发布:2025-07-13 05:08:14 浏览:564
网线连网账号密码多少 发布:2025-07-13 05:03:26 浏览:208