一、简单的储存过程:
1、创建一个存储过程
create procere GetUsers()
begin
select * from user;
end;12345
2、调用存储过程
call GetUsers();12
3、删除存储过程
drop procere if exists GetUsers;
二、带参数的存储过程
1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;
2、下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出
create procere GetScores(
out minScore decimal(8,2),
out avgScore decimal(8,2),
out maxScore decimal(8,2)
)
begin
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
end;1234567891011
3、调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以@开始) , 如下所示 :
call GetScores(@minScore, @avgScore, @maxScore);12
4、该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量@minScore, @avgScore, @maxScore, 然后即可调用显示该变量的值 :
select @minScore, @avgScore, @maxScore;
5、使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :
create procere GetNameByID(
in userID int,
out userName varchar(200)
)
begin
select name from user
where id = userID
into userName;
end;12345678910
6、调用存储过程 :
call GetNameByID(1, @userName);
select @userName;123
‘贰’ oracle 添加一个计划任务 每天凌晨两点 定时执行一个存储过程 求详细步骤!!急!!
在你的存储过程里面定义一个变量:
v_HH24 CHAR(2) := '00';
begin后面给变量赋值:
v_HH24 := to_char(sysdate, 'HH24');
然后在你执行的代码外面加上:
IF v_HH24 = '02' THEN
你的代码;
end if;
然后使用下面的脚本创建job:
begin
sys.dbms_job.submit(job => :job,
what => '你的存储过程名字;',
next_date => to_date('01-06-2013 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE+60/1440');
commit;
end;
/
‘叁’ MSSQL数据库中定时存储的存储过程
您好!要实现你要的功能;操作如下:
一、可以先写好存储过程的内容;放在目标数据库中
二、在MSSQL的SQL server代理——〉作业——〉新建一个作业 在[常规]选项卡中 设置 名称AUTOZY——〉在[步骤]选项卡中 点击[新建作业]
三、在弹出的作业步骤窗口中;填写步聚名称(自己取一个)--运行身份选择SA或者WINDOWS运行都可以---在数据库处选择 目标数据库(这步很关键)---
在命令 处 写 exec 存储过程的名称(这个不要写错)---点击[确定] 返回上级窗口
四、选择[计划]选项卡 --在计划窗口中可以具体设置怎么样定时运行的方案
五、设置好后 [确定]返回上级窗口---再点击[确定]保存了这个作业
如有不明之处;欢迎CALL 我
‘肆’ [存储过程详解]sql存储过程实例详解
什么是存储过程: 存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。
存储过程的好处:
1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
小结:总之存储过程是好东西,在做项目时属于必备利器,下面介绍存储过程的基本语法。
存储过程的语法和参数讲解
存储过程的一些基本语法:
创建存储过程的参数:
1.procere_name:存储过程的名称,在前面加#为局部临时存储过程,加##为全局临时存储过程。
2.; number:是可选的整数,用来对同名模镇派的过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。例如,名为 orders 的应用程序使用的过程可以命名为 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc 语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应在 procere_name 前后使用适当的定界符。
3.@parameter:
存储过程的参数。可以有一个或多个。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有2.100 个参数。使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则旅缺。每个过程的参数仅用于该过程本身;
相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。有关更多信息,请参见 EXECUTE。
4.data_type:参数的数据类型。所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。不过,cursor 数据类型只能用于 OUTPUT 参数。如果指定的数据类型为 cursor,也必须同时指定 VARYING 和 OUTPUT 关键字。有关 SQL Server 提供的数据类型旦贺及其语法的更多信息,请参见数据类型。说明 对于可以是 cursor 数据类型的输出参数,没有最大数目的限制。
5.VARYING:指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。
6.default:参数的默认值。如果定义了默认值,不必指定该参数的值即可执行过程。默认值必须是常量或 NULL。如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(%、_、[] 和 [^])。
7.OUTPUT:表明参数是返回参数。该选项的值可以返回给 EXEC[UTE]。使用 OUTPUT 参数可将信息返回给调用过程。Text、ntext 和 image 参数可用作 OUTPUT 参数。使用 OUTPUT 关键字的输出参数可以是游标占位符。
8.RECOMPILE:表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译。在使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。
9.ENCRYPTION:表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 语句文本的条目。使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。
说明 在升级过程中,SQL Server 利用存储在 syscomments 中的加密注释来重新创建加密过程。
10.FOR REPLICATION:指定不能在订阅服务器上执行为复制创建的存储过程。.使用 FOR REPLICATION 选项创建的存储过程可用作存储过程筛选,且只能在复制过程中执行。本选项不能和 WITH RECOMPILE 选项一起使用。
11.AS:指定过程要执行的操作。
12.sql_statement:过程中要包含的任意数目和类型的 Transact-SQL 语句。但有一些限制。
小结:看过这些基本语法后,下面我就根据语法创建各式的存储过程。
创建存储过程
针对上面的表,我使用存储过程对它做一些操作:
1.只返回单一记录集的存储过程
结果:相当于运行 select * fromUserAccount这行代码,结果为整个表的数据。
2.没有输入输出的存储过程
结果:相当于运行insertintoUserAccount (UserName,[PassWord],RegisterTime,RegisterIP)values(9,9,'2013-01-02',9)这行代码。
3.有返回值的存储过程
解释:这里的@@rowcount为执行存储过程影响的行数,执行的结果是不仅插入了一条数据,还返回了一个值即 return value =1 ,这个可以在程序中获取,稍后在c#调用存储过程中会有说到。
4.有输入参数和输出参数的存储过程
解释:@UserName为输入参数,@UserID为输出参数。运行结果为@userID为COOUT(*)即 =1。
5. 同时具有返回值、输入参数、输出参数的存储过程
结果:@userID为COOUT(*)即 =1,Retun Value=1。
6.同时返回参数和记录集的存储过程
结果:返回执行select*fromUserAccount 这句代码的结果集,同时@userID为COOUT(*)即 =1,Retun Value=9。
7.返回多个记录集的存储过程
结果:返回两个结果集,一个为select*fromUserAccount,另一个为select*fromUserAccountwhereUserID>5 。
小结:上面我们创建了各式的存储过程。
‘伍’ SQL存储过程是怎么执行的(是执行过程)谢了
就像你调用方法一样嘛
通过调用
exec 存储过程名 参数名1,参数名2,.....
进入存储过程,根据存储过程编写语句顺序执行
‘陆’ 怎样让sqlserver后台定时执行某个存储过程
SQL代理中添加工作计划(job)
‘柒’ 如何获取oracle存储过程的执行计划
select t.sql_id,
t.sql_text,
s.plan_hash_value,
s.optimizer_cost,
s.executions_total,
s.elapsed_time_total,
s.disk_reads_total,
s.buffer_gets_total
from DBA_HIST_SQLSTAT s, DBA_HIST_SQLTEXT t
where s.sql_id=t.sql_id
and t.sql_text like'%存储过程名称拦清%';
没有想简郑前到其他好办法,确实不太好查了,把存丛春储过程当作SQL来查找吧。
‘捌’ 如何每天定时执行一个存储过程
1、打开SQL Server Management Studio,SQL Server代理--作业--点右键--新建作业
2、作业的名称取为:test,并进行说明,若作业的数量太多,以方便区别; 这里写上定时执行存储过程Pr_test,确定保存.
3、点击常规下面的步骤,按箭头指示,新建步骤.
4、取名步骤名称:exec pr_test,注意选择存储过程所在的数据库;录入需要执行的命令:exec pr_test ,确定保存.
若有其它参数命令也可以编写
5、新建计划,进放计划属性设置窗口.
6、依然要填写计划的名称:exec pr_test
计划类型:重复计划
时间频率:每月的26日的12点30分自动执行一次
持续时间:无结束日期
确定保存.到此基本功能已经设置完成,额外其它功能可以根据需要进行增加.
‘玖’ SQL SERVER 如何应用存储过程呢操作方法有什么呢
SQL SERVER 如何应用存储过程呢?
首先最好在SQL SERVER的管理工具中通过create procere写一条语句来创建存储过程,创建语句后,点击工具栏中的执行命令,消息栏中显示命令已成功完成的消息,证明存储过程已创建。然后就可以在存储过程子文件夹下看到自己创建的存储过程了,执行存储过程,可以使用exec命令,后跟存储过程的名称,另外,还可以在创建存储过程的时候传入参数,如下图,需要使用@符号传入参数,如果你的存储过程加了参数,那么如果你调用的时候没有传入参数,SQL SERVER会提示错误。
3、存储过程减少网络流量对于数据库对象的相同操作,如果将此次操作所涉及的T-SQL语句组织成一个存储过程,在客户端调用该存储过程时,只在网络上传递调用语句,否则会是多条 SQL 语句。从而减轻了网络流量,降低了网络负载存储过程可以用作安全机制,系统管理员可以对要执行的存储过程的权限进行限制,从而限制对某些数据的访问,避免未经授权的用户访问数据,保证数据安全。