oracle存储执行
oracle存储过程sql执行超时要优化系统。优化系统步骤:
1、参数默认是30秒,执行的sql超过30秒就会报超时错误。
2、优化sql让执行更快。
3、修改这个参数,在调用执行SQL语句之前。Oracle公司(甲骨文)是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州Redwoodshore,面向全球开放oracle认证,Oracle开发的关系数据库产品因性能卓越而闻名,Oracle数据库产品为财富排行榜上的前1000家公司所采用。
2. oracle存储过程是从上到下执行吗
是。oracle存储过程是原则从上至下;从右向左由上至下,在执行计划中一般含有多个节点,所以是。存储过程(StoredProcere)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
3. oracle 数据库 怎么执行存储过程
一。 概述Oracle存储过程开发的要点是:
1; 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储过程;
2; 在Oracle数据库中创建一个存储过程;
3; 在Oracle数据库中使用SQL*Plus工具运行存储过程;
4; 在Oracle数据库中修改存储过程;
5; 通过编译错误调试存储过程;
6; 删除存储过程;二。环境配置
包括以下内容:
1; 一个文本编辑器Notepad;
2; Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 语句到Oracle database。
3; Oracle 10g express数据库,它是免费使用的版本;
需要的技巧:
4; SQL基础知识,包括插入、修改、删除等
5; 使用Oracle's SQL*Plus工具的基本技巧;
6; 使用Oracle's PL/SQL 编程语言的基本技巧;三。写一个存储过程
在Notepad, 写下:
CREATE OR REPLACE PROCEDURE skeletonISBEGINNULL;END;把文件存为skeleton.sql.
让我们一行行遍历这个存储过程:
1 CREATE OR REPLACE PROCEDURE skeleton2 IS3 BEGIN
4 NULL;5 END;行1:CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;行2:IS关键词表明后面将跟随一个PL/SQL体。
行3:BEGIN关键词表明PL/SQL 体的开始。
四。创建一个存储过程
SQL语句CREATE OR REPLACE PROCEDURE在Oracle数据库中创建、编译和保存一个存储过程。
从Window打开SQL*Plus并且从SQL*Plus 登录到你的数据库;打开skeleton.sql文件。
在SQL命令提示符下输入以下命令:
SQL@skeletonSQL/SQL*Plus装载skeleton.sql文件的内容到 SQL*Plus缓冲区并且执行SQL*Plus语句;SQL*Plus 会通知你存储过程已经被成功地创建。
4. oracle 存储过程执行动态sql实例
oracle的动态sql是指在语句块使用execute immediate 执行sql语句,sql语句可以使用存储过程传的参数进行拼接,本文针对varchar2和number两种类型的参数类型,进行sql拼接并执行。
功能:输入日期区间,销售数量满足上限和下限的产品id
1.正常传值
输出结果
2.若果number类型的参数传空,会报ora-00936:缺失表达式,可以在存储过程中增加对参数null值的判断
oracle 动态拼接传入参数,varchar2类型可以使用'''|| IN_START_DTIME || ''' ,number类型可以使用'||IN_DOWN_LIMIT||' ; 拼接的过程需要注意校验参数的合法性,增加存储过程的容错性。临时表使用了会话级,存储过程执行完,可以通过查询存储过程获取结果。
5. 请问oracle怎么执行存储过程
我试验过了,就是exec 存储过程名或者execute 存储过程名(参数),请你在仔细确认一下,你的存储过程名写没写对呀,或者你没有进入sqlplus中?
----
以上,希望对你能有帮助。
6. oracle怎么执行存储过程
sqlplus或者PL/SQL SQL窗口
输入(单独调用存储过程):
无参数
EXEC 过程名;
或者
BEGIN
过程名
END;
IN 参数
EXEC 过程名(入参数..);
或者
BEGIN
过程名(入参数...)
END;
OUT参数,IN OUT参数
variable 绑定变量名 数据类型; //定义一个变量接收出参数的值;
EXEC 过程名(:绑定变量名);
7. oracle 中用什么命令执行一个带参数的存储过程
具体如下:
1、第一步,创建一个新的存储过程,见下图,转到下面的步骤。

8. 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的存储过程是失败的还是成功的呢?答案是成功的。
