`

sql server2008存储过程

阅读更多

存储过程:可以使得对的管理、以及显示关于及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。

    可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:

    (1)功能强大,限制少。

    (2)可以在单个存储过程中执行一系列 SQL 语句。

    (3)可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

    (4)存储过程在创建时即在上进行编译,所以执行起来比单个 SQL 语句快。

    (5)可以有多个返回值,即多个输出参数,并且可以使用SELECT返回结果集。

 

    函数:是由一个或多个 SQL 语句组成的子程序,可用于封装代码以便重新使用。自定义函数诸多限制,有许多语句不能使用,许多功能不能实现。函数可以直接引用返回值,用表变量返回记录集。但是,用户定义函数不能用于执行一组修改全局数据库状态的操作。 

 

复杂存储过程示例:

 

以下是复制具有关联关系的多张数据表的存储过程使用方法

 

--存储过程(在创建之前,首先删除该存储过程)
/*
use test
go

drop proc updAndInsertTableDataValue;
1、根据某表的id号,获取表信息然后插入一条新纪录并标记为新,更改之前的为旧
2、根据给定表id获取该表下所有数据项,然后循环,并进行复制
3、在表项的循环复制中,又进行该表项下的评价信息的检索和复制
*/
use TEST
go

create PROCEDURE  updAndInsertTableDataValue 
@tableId int
as
declare @tName varchar(100),@tUser int,@tState int,@tType int,@tDepType int,@tDepId int,@tUrl varchar(50),@tGType int,@tValidity date
declare @newTableId int,@newDataId int
--根据表的id号获取表信息,然后赋值
select @tName=tableListName,@tUser=createUser,@tState=tableListState,@tType=tableType,@tDepType=tableDepType,@tDepId=departId
,@tUrl=tableImgUrl,@tGType=gradeType,@tValidity=validity
from CW_SELF_TABLE_LIST where tableListId=@tableId;
--将值插入到表中,新增一条信息
insert 
	into CW_SELF_TABLE_LIST(createDate,createUser,tableListName,tableListState,tableImgUrl,tableType,tableDepType,departId,tableMark,gradeType,validity)
	values(CURRENT_TIMESTAMP,@tUser,@tName+'('+CONVERT(varchar(100), GETDATE(), 23)+')' ,@tState,@tUrl,@tType,@tDepType,@tDepId,1,@tGType,@tValidity); 
--将新生成的信息的主键赋值给变量
set @newTableId = @@identity
--将原来的信息改为陈旧信息
update CW_SELF_TABLE_LIST set tableMark=0 where tableListId=@tableId;	

--******循环该表的数据项,然后将该数据项赋值**********
declare tableDataCursor cursor 
	for select tableDataId,orderId,tableDataIntro,tableDataName,tableDataState,tableDataType
	from CW_SELF_TABLE_DATA where  tableListId=@tableId;
--开启游标
open tableDataCursor
DECLARE @dataId int,@dOrder int,@dIntro varchar(150),@dName varchar(150),@dState int,@dType varchar(100)

FETCH NEXT FROM tableDataCursor INTO @dataId,@dOrder,@dIntro,@dName,@dState,@dType
while(@@FETCH_STATUS<>-1)
begin
if(@@FETCH_STATUS<>-2)
begin 
--将值插入到tableData表中
insert into CW_SELF_TABLE_DATA(createDate,orderId,tableDataIntro,tableDataName,tableDataState,tableDataType,tableListId)
	values(CURRENT_TIMESTAMP,@dOrder,@dIntro,@dName,@dState,@dType,@newTableId)
--将新的数据项id的值赋给变量
set @newDataId = @@IDENTITY

--***********开始循环数据项中的数据值************
declare tableValueCursor cursor
	for select orderId,tableState,tableValueIntro,tableValueName
	from cw_self_table_value where tableDataId=@dataId	
open tableValueCursor
declare @vOrder int ,@vState int ,@vIntro varchar(255),@vName varchar(50)

fetch next from tableValueCursor into @vOrder,@vState,@vIntro,@vName
while(@@FETCH_STATUS<>-1)
begin
if(@@FETCH_STATUS<>-2)
begin 
insert into CW_SELF_TABLE_VALUE(createDate,orderId,tableState,tableValueIntro,tableValueName,tableDataId)
	values(CURRENT_TIMESTAMP,@vOrder,@vState,@vIntro,@vName,@newDataId) 
end
fetch next from tableValueCursor into @vOrder,@vState,@vIntro,@vName
end
close tableValueCursor
deallocate tableValueCursor
end
FETCH NEXT FROM tableDataCursor INTO @dataId,@dOrder,@dIntro,@dName,@dState,@dType
end	
close tableDataCursor	
deallocate tableDataCursor
return @newTableId
go

--exec updAndInsertTableDataValue 15;

 

分享到:
评论

相关推荐

    针对sqlserver 2008 存储过程通过With Encryption加密方式的解密

    针对 SQL Server 2008 存储过程通过 With Encryption 加密方式的解密 SQL Server 2008 存储过程中使用 With Encryption 加密方式可以对存储过程进行加密保护,以防止未经授权的访问和修改。但是,在某些情况下,...

    sql server 2008 存储过程与储发器 详解 书籍

    在SQL Server 2008中,存储过程和触发器是数据库管理中不可或缺的重要组成部分,它们为数据库系统提供了更高级别的功能和控制。本篇将深入解析这两个概念及其在实际应用中的具体用法。 首先,存储过程是预编译的SQL...

    sql server 2008 存储过程示例带游标

    下面将详细解析标题“sql server 2008 存储过程示例带游标”所涉及的知识点,包括存储过程的创建、游标的使用以及SQL Server 2008中的特性。 ### 存储过程 存储过程是预编译的SQL语句集合,存储在数据库服务器上,...

    sqlserver 2008 解密

    在SQL Server 2008中,数据库对象如存储过程和函数有时会被加密,以保护敏感代码或数据。本文将深入探讨SQL Server 2008中的加密机制、存储过程与函数的解密方法以及相关的安全考虑。 首先,让我们理解SQL Server中...

    SqlServer存储过程及调试指南

    SqlServer存储过程及调试指南的知识点如下: 1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作...

    sql Server 通用分页存储过程

    sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程

    SQLServer存储过程调用WebService

    [Microsoft.SqlServer.Server.SqlProcedure] public static void CallWebService(SqlString url, SqlString methodName) { // 创建 SOAP 服务客户端 SoapHttpClientProtocol client = new ...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    SQL Server 中存储过程比直接运行 SQL 语句慢的原因 在 SQL Server 中,存储过程比直接运行 SQL 语句慢的原因是 Parameter sniffing 问题。Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计...

    sql server 2008安装过程详细操作

    ### SQL Server 2008 安装过程详细操作 #### 实验要求: 1. **熟悉SQL Server 2008各个版本的信息** - SQL Server 2008提供了多个版本来满足不同用户的需求,包括但不限于:Express、Web、Standard、Business ...

    vs中断点测试sqlserver的存储过程

    下面,我们将详细探讨如何在Visual Studio(以下简称VS)环境中进行SQL Server存储过程的中断点测试。 ### 一、准备工作:创建VS项目 在进行中断点测试前,首先需要在VS中创建一个新的项目。这一步骤是基础,确保...

    SQLserver2008存储过程编写(有参和无参)

    在SQL Server 2008中,存储过程是一种预编译的SQL代码集合,它可以包含一个或多个SQL语句,用于执行特定的任务。存储过程是数据库中的重要组件,提供了重复使用代码、提高性能、增强安全性以及简化应用程序与数据库...

    在VB6.0中调用SQL Server的存储过程.pdf

    在VB6.0中调用SQL Server的存储过程是VB开发者经常遇到的问题,本文将详细介绍如何在VB6.0中调用SQL Server的存储过程,并对存储过程的优点和使用方法进行了详细的解释。 首先,存储过程是一种封装方法,用于重复...

    SQL_Server存储过程调试指南

    资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...

    Sql Server 存储过程的导出导入.doc

    在SQL Server中,存储过程是一种预编译的SQL语句集合,它允许开发人员封装一组复杂的操作,并在需要时重复调用。存储过程对于数据库管理、数据处理和性能优化具有重要意义。本文主要介绍如何在SQL Server中导出和...

    sqlserver存储过程解密工具

    这就是“sqlserver存储过程解密工具”所解决的问题。 SQL Server存储过程的加密通常是在开发或部署过程中,为了保护知识产权、防止未授权修改或者增加安全性而进行的。然而,在某些情况下,比如接手他人项目、排查...

    SQLServer存储过程转为oracle存储过程的工具

    可以将SQL Server存储过程转为oracle存储过程的工具

    sql server 2008 native client

    SQL Server 2008 Native Client是微软推出的一款用于与SQL Server进行数据交互的客户端库,它是SQL Server数据库引擎和应用程序之间的一个接口。这个库包含了ODBC(Open Database Connectivity)驱动程序和OLE DB...

    SQL server存储过程习题,SQL触发器习题.rar

    在SQL Server数据库管理系统中,存储过程和触发器是两种非常重要的数据库编程元素,它们对于数据库设计和数据管理具有深远的影响。下面将详细讲解这两个概念及其相关的知识点。 **SQL存储过程**: 1. **定义**:SQL...

Global site tag (gtag.js) - Google Analytics