澳门新葡亰娱乐网站-www.142net-欢迎您

澳门新葡亰娱乐网站是因为你还没有找到一条正确的致富之路,www.142net是将所有的游戏都汇集在一起的官方平台,因为澳门新葡亰娱乐网站这个网站当中有着大量的游戏攻略,托IP定位技术,传达终端直接到达的精准传播方式。

存储过程实例,存储过程简单实例

来源:http://www.bhtsgq.com 作者:计算机知识 人气:185 发布时间:2019-05-17
摘要:USE [ty_szum_oa_v2]GO/****** Object: StoredProcedure [dbo].[ty_oa_insert_ty_oa_document_publish] Script Date: 2018/3/9 9:34:26 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[ty_oa_insert_ty_oa_document_publish] (
USE [ty_szum_oa_v2]
GO
/****** Object:  StoredProcedure [dbo].[ty_oa_insert_ty_oa_document_publish]    Script Date: 2018/3/9 9:34:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[ty_oa_insert_ty_oa_document_publish]  
( 
 @id uniqueidentifier,
 @workflow_instance_id int, 
 @open_type int, 
 @file_titile nvarchar(512),
 @file_content nvarchar(max),
 @draft_user_name nvarchar(32),
 @draft_dept_id int,
 @created_user_name nvarchar(32),
 @file_publish_date datetime,
 @file_state int,
 @remark nvarchar(max),
 @fid bigint,
 @db_created_id int,
 @db_created_date datetime,
 @db_last_updated_id int,
 @db_last_updated_date datetime,
 @db_status int
) 
--WITH ENCRYPTION  
AS  
BEGIN  
 SET NOCOUNT ON 
 INSERT INTO ty_oa_document_publish
 ( 
  [id]  
  ,[workflow_instance_id] 
  ,[open_type]  
  ,[file_titile]  
  ,[file_content]  
  ,[draft_user_name] 
  ,[draft_dept_id]
  ,[created_user_name]  
  ,[file_publish_date]
  ,[file_state] 
  ,[remark]  
  ,[db_created_id]  
  ,[db_created_date]
  ,[db_last_updated_id] 
  ,[db_last_updated_date]  
  ,[db_status] 
 )  
 VALUES  
 (  
  @id  
  ,@workflow_instance_id
  ,@open_type  
  ,@file_titile 
  ,@file_content  
  ,@draft_user_name  
  ,@draft_dept_id 
  ,@created_user_name 
  ,@file_publish_date  
  ,@file_state  
  ,@remark  
  ,@db_created_id  
  ,@db_created_date  
  ,@db_last_updated_id  
  ,@db_last_updated_date  
  ,@db_status  
 );  
END 
CREATE procedure [dbo].[cp_User_Increment]
    @channelId int,
    @currentPage int,
    @pageSize int,
    @userId int
as

if @channelId<=0
    begin
        select 
        CurrentTime,
        Count
        from
        (
            select 
            *,
            ROW_NUMBER() OVER(ORDER BY CurrentTime DESC) AS RowNum 
            from 
            (
                select 
                CONVERT(varchar(12), AddTime, 111 ) as CurrentTime,
                COUNT(1) as Count 
                from Users 
                where IsDel=0 and ChannelId in (select ChannelId from Channel_User where UserId=@userId)
                group by CONVERT(varchar(12), AddTime, 111) 
            )a 
        )b
        where RowNum BETWEEN (@currentPage-1)*@pageSize 1 and @currentPage*@pageSize
    end
else
    begin

        select 
        CurrentTime,
        Count
        from
        (
            select 
            *,
            ROW_NUMBER() OVER(ORDER BY CurrentTime DESC) AS RowNum 
            from 
            (
                select 
                CONVERT(varchar(12), AddTime, 111 ) as CurrentTime,
                COUNT(1) as Count 
                from Users
                where IsDel=0 and ChannelId=@channelId and ChannelId in (select ChannelId from Channel_User where UserId=@userId)
                group by CONVERT(varchar(12), AddTime, 111) 
            )a 
        )b
        where RowNum BETWEEN (@currentPage-1)*@pageSize 1 and @currentPage*@pageSize
    end

GO

Transact-SQL中的存款和储蓄进程,极其类似于Java语言中的方法,它能够再次调用。当存款和储蓄进度进行2遍后,能够将语句缓存中,那样后一次实践的时候一向接纳缓存中的语句。那样就足以抓牢存款和储蓄进程的习性。

存储过程:是为了完成特定功能的sql语句集。
实例一:无参的存储过程
$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");
mysql_select_db('test',$conn);
$sql = "
create procedure myproce()
begin
INSERT INTO user (id, username, sex) VALUES (NULL, 's', '0');
end; 
";
mysql_query($sql);//创建一个myproce的存储过程

$sql = "call test.myproce();";
mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。

实例二:传入参数的存储过程
$sql = "
create procedure myproce2(in score int)
begin
if score >= 60 then
select 'pass';
else
select 'no';
end if;
end; 
";
mysql_query($sql);//创建一个myproce2的存储过程
$sql = "call test.myproce2(70);";
mysql_query($sql);//调用myproce2的存储过程,看不到效果,可以在cmd下看到结果。

实例三:传出参数的存储过程
$sql = "
create procedure myproce3(out score int)
begin
set score=100;
end; 
";
mysql_query($sql);//创建一个myproce3的存储过程
$sql = "call test.myproce3(@score);";
mysql_query($sql);//调用myproce3的存储过程
$result = mysql_query('select @score;');
$array = mysql_fetch_array($result);
echo '<pre>';print_r($array);

实例四:传出参数的inout存储过程
$sql = "
create procedure myproce4(inout sexflag int)
begin
SELECT * FROM user WHERE sex = sexflag;
end; 
";
mysql_query($sql);//创建一个myproce4的存储过程
$sql = "set @sexflag = 1";
mysql_query($sql);//设置性别参数为1
$sql = "call test.myproce4(@sexflag);";
mysql_query($sql);//调用myproce4的存储过程,在cmd下面看效果


实例五:使用变量的存储过程 
$sql = "
create procedure myproce5(in a int,in b int)
begin
declare s int default 0;
set s=a b;
select s;
end; 
";
mysql_query($sql);//创建一个myproce5的存储过程
$sql = "call test.myproce5(4,6);";
mysql_query($sql);//调用myproce5的存储过程,在cmd下面看效果

实例六:case语法
$sql = "
create procedure myproce6(in score int)
begin
case score
when 60 then select '及格';
when 80 then select '及良好';
when 100 then select '优秀';
else select '未知分数';
end case;
end; 
";
mysql_query($sql);//创建一个myproce6的存储过程
$sql = "call test.myproce6(100);";
mysql_query($sql);//调用myproce6的存储过程,在cmd下面看效果

实例七:循环语句
$sql = "
create procedure myproce7()
begin
declare i int default 0;
declare j int default 0;
while i<10 do
set j=j i;
set i=i 1;
end while;
select j;
end; 
";
mysql_query($sql);//创建一个myproce7的存储过程
$sql = "call test.myproce7();";
mysql_query($sql);//调用myproce7的存储过程,在cmd下面看效果


实例八:repeat语句
$sql = " 
create procedure myproce8()
begin
declare i int default 0;
declare j int default 0;
repeat
set j=j i;
set i=i 1;
until j>=10
end repeat;
select j;
end; 
";
mysql_query($sql);//创建一个myproce8的存储过程
$sql = "call test.myproce8();";
mysql_query($sql);//调用myproce8的存储过程,在cmd下面看效果

实例九:loop语句
$sql = "
create procedure myproce9()
begin
declare i int default 0;
declare s int default 0;

loop_label:loop
set s=s i;
set i=i 1;
if i>=5 then
leave loop_label;
end if;
end loop;
select s;
end; 
";
mysql_query($sql);//创建一个myproce9的存储过程
$sql = "call test.myproce9();";
mysql_query($sql);//调用myproce9的存储过程,在cmd下面看效果

实例十:删除存储过程
mysql_query("drop procedure if exists myproce");//删除test的存储过程
实例十:存储过程中的游标
总结中。

 

 

Ø 存款和储蓄进度的定义

存储过程实例,存储过程简单实例。 

    存款和储蓄进程Procedure是一组为了产生一定成效的SQL语句集合,经编写翻译后存款和储蓄在数据库中,用户通过点名存款和储蓄进度的名目并交付参数来实行。

    存款和储蓄进程中得以涵盖逻辑调节语句和数目垄断语句,它尚可参数、输出参数、再次来到单个或四个结实集以及再次回到值。

    由于存款和储蓄进程在创造时即在数据库服务器上进行了编写翻译并蕴藏在数据库中,所以存款和储蓄进度运维要比单个的SQL语句块要快。同时鉴于在调用时只需用提供仓库储存进度名和要求的参数音讯,所以在早晚水准上也足以削减互联网流量、简单网络担当。

 

    1、 存款和储蓄进程的长处

        A、 存款和储蓄进度允许规范组件式编制程序

        存款和储蓄进度成立后得以在程序中被频仍调用实践,而不必要再一次编排该存款和储蓄进度的SQL语句。而且数据库专门的学问人士能够天天对存款和储蓄进度进展改换,但对利用程序源代码却毫不影响,从而相当的大的增加了先后的可移植性。

        B、 存款和储蓄进度能够落到实处不慢的实践进程

        假若某壹操作包涵多量的T-SQL语句代码,分别被反复执行,那么存款和储蓄进度要比批管理的实践进度快得多。因为存款和储蓄进度是预编译的,在第一次运转三个存款和储蓄过程时,查询优化器对其张开剖析、优化,并提交最后被存在系统表中的积攒布署。而批管理的T-SQL语句每便运维都急需预编写翻译和优化,所以速度就要慢一些。

        C、 存款和储蓄进程缓慢消除网络流量

        对于同三个针对数据库对象的操作,假如那壹操作所关联到的T-SQL语句被公司成壹仓库储存进度,那么当在客户机上调用该存款和储蓄进度时,互连网中传递的只是该调用言语,不然将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。

本文由澳门新葡亰发布于计算机知识,转载请注明出处:存储过程实例,存储过程简单实例

关键词: 存储过程 mysql 所有随笔 SQL Server技术 数据库技术

最火资讯