`
xwood
  • 浏览: 102093 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

数据库存储过程

阅读更多
一、SQL SERVER
1.语法
CREATE PROC[ EDURE ] [owner.]procedure_name[;number]
    [ { @parameter data_type}
        [ VARYING ] [=default] [ OUTPUT ]
    ] [,...n]

[ WITH
    { RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement[ ...n]

owner

    拥有存储过程的用户 ID 的名称。owner必须是当前用户的名称或当前用户所属的角色的名称。

procedure_name

    新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。

;number

    是可选的整数,用来对同名的过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。例如,名为 orders 的应用程序使用的过程可以命名为orderproc;1、orderproc;2 等。DROP PROCEDUREorderproc语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应在procedure_name前后使用适当的定界符。

@parameter

    过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值,或者该值设置为等于另一个参数)。存储过程最多可以有 2.100 个参数。

使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。

data_type

    参数的数据类型。除table之外的其他所有数据类型均可以用作存储过程的参数。但是,cursor数据类型只能用于 OUTPUT 参数。如果指定cursor数据类型,则还必须指定 VARYING 和 OUTPUT 关键字。对于可以是cursor数据类型的输出参数,没有最大数目的限制。

VARYING

    指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。

default

    参数的默认值。如果定义了默认值,不必指定该参数的值即可执行过程。默认值必须是常量或 NULL。如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(%、_、[] 和 [^])。

OUTPUT

    表明参数是返回参数。该选项的值可以返回给 EXEC[UTE]。使用 OUTPUT 参数可将信息返回给调用过程。Text、ntext和image参数可用作 OUTPUT 参数。使用 OUTPUT 关键字的输出参数可以是游标占位符。

n

    表示最多可以指定 2.100 个参数的占位符。

{RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION}

    RECOMPILE 表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译。在使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。

ENCRYPTION 表示 SQL Server 加密syscomments表中包含 CREATE PROCEDURE 语句文本的条目。使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。

FOR REPLICATION

    指定不能在订阅服务器上执行为复制创建的存储过程。.使用 FOR REPLICATION 选项创建的存储过程可用作存储过程筛选,且只能在复制过程中执行。本选项不能和 WITH RECOMPILE 选项一起使用。

AS

   指定过程要执行的操作。

sql_statement

   过程中要包含的任意数目和类型的 Transact-SQL 语句。但有一些限制。

n

   是表示此过程可以包含多条 Transact-SQL 语句的占位符。
2.示例
create procedure dbo.insertWorkerInfo 
	@year varchar(10) 
as
	declare @count int
	--declare @year varchar(10)
	--set @year = '2011'

	--插入员工信息
begin
	insert into dbo.t_system_worker(orgid, status, id, referid, code, name, email, year, idcard, sex, worktype, address, remark, joinunitdate, createdate,lastdate)
	select case companyname
				when 'NPC' then 'EB2007101011919421847501954589888'
				when '安装' then 'EB200612141166096392000000ORGAAAAAAAA251'
				when '钢结构公司' then 'EB2007052811801380850391954589888'
				when '机具站' then 'EB200612141166096392000000ORGAAAAAAAAA45'
				when '土建' then 'EB200612141166096392000000ORGAAAAAAAAA45'
				else 'EB200612141166096392000000ORGAAAAAAAAA45'
			end as orgid, '0' as status, v.newid,v.id as refid,	v.inumber,cast(v.cname as varchar(50)) as name,
			cast(v.cNation as varchar(50)) as email,v.iyear as year,v.cidnumber as idcard,cast(v.cgender as varchar(4)) as sex,
			cast(v.worktypename as varchar(100)) as worktype,cast(v.chomeaddress as varchar(200)) as address,
			cast(v.cremark as varchar(1000)) as remark,	v.dBDDate as joinunitdate,v.createdate,	v.lasteditdate
	from (
			select * from openquery(link102, 
						'select newid() as newid,id,cNation, companyname, inumber, cname, 
									iyear, cidnumber, cgender, WorkTypeName, chomeaddress, 
									cRemark, dBDDate,CreateDate, LastEditDate 
						from ntjzzcb.dbo.v_Worker') v
			where iyear = @year and cidnumber not in (select idcard from dbo.t_system_worker where year = @year)
	) v
	
	set @count = @@rowcount
	
	if @count > 0
	begin
	--插入工号
	insert into dbo.t_worker_code (id, empworkid, type, status, year, createdate, code)
	select newid() as id, e.empworkid, e.type, e.status, e.year, e.createdate, a.inumber from (
		select id as empworkid, '1' as type, '0' as status, year, createdate, idcard 
		from dbo.t_system_worker 
		where year = @year and id not in (select empworkid from dbo.t_worker_code where year = @year)
	)e
	inner join (
		select * from openquery(link102, 'select id, inumber, iyear, cidnumber from ntjzzcb.dbo.v_Worker where inumber is not null')
		where iyear = @year and inumber not in (select code from dbo.t_worker_code where status = '0' and year = @year)

	)a on e.idcard = a.cidnumber and e.year = a.iyear
	end
end
分享到:
评论

相关推荐

    网狐数据库储存过程解密工具

    在IT行业中,数据库存储过程是数据库管理系统中一种非常重要的编程元素。它们是一组为了完成特定功能的SQL语句集,可以被保存并重复使用,提高了数据处理的效率和代码的可维护性。在某些特定场景下,比如商业软件...

    学习数据库存储过程的课件

    【存储过程概述】 ...学习数据库存储过程不仅能够提升数据库管理效率,还能优化应用程序性能,确保数据的安全性和一致性。通过深入理解和实践,开发者能够更好地控制数据库操作,构建高效且健壮的数据库应用。

    C# Ado.net实现读取SQLServer数据库存储过程列表及参数信息示例

    C# Ado.net实现读取SQLServer数据库存储过程列表及参数信息示例 本文主要介绍了使用C# Ado.net实现读取SQL Server数据库存储过程列表及参数信息的方法,通过实例形式总结分析了C#针对SQL Server数据库存储过程及...

    数据库存储过程PPT学习教案.pptx

    数据库存储过程是数据库管理系统(DBMS)中的一种重要特性,主要用于封装一组SQL语句和数据库操作,便于重复使用和管理。存储过程具有多种优势,包括模块化编程、提高执行效率、减少网络通信量、增强安全性等。在SQL...

    使用C#导出数据库存储过程源码

    标题中的“使用C#导出数据库存储过程源码”指的是使用C#编程语言编写程序来获取SQL Server数据库中的存储过程的源代码。这通常涉及到数据库连接、查询执行以及结果处理等步骤。C#提供了丰富的ADO.NET库,如...

    一些常用数据库存储过程

    ### 一些常用数据库存储过程 在软件开发过程中,数据库存储过程是提高应用程序性能和安全性的关键技术之一。存储过程是一组预编译好的SQL语句和控制流语句的集合,可以实现复杂的业务逻辑处理,同时减少网络通信...

    数据库存储过程+触发器实例+权限构架

    数据库存储过程和触发器是数据库管理系统中的重要组成部分,它们在数据操作和业务逻辑控制中扮演着关键角色。权限构架则是确保系统安全性和数据完整性的重要机制。以下将详细阐述这三个核心概念及其应用。 首先,...

    高斯数据库存储过程模板

    包括存过日志加载,分区创建,已经存过的使用

    数据库存储过程解密工具

    数据库存储过程解密工具,方便使用,只需链接数据库,选择要解密的存储过程即可

    数据库存储过程的优化方法

    数据库存储过程的优化:优化存储过程有很多种方法,下面介绍最常用的7种

    sql数据库存储过程学习

    SQL数据库存储过程是一种预编译的SQL代码集合,它封装了一系列复杂的数据库操作,可以在需要时通过调用存储过程的名字来执行。存储过程的使用对于数据库性能优化、代码复用和安全性提升都有显著作用。 首先,了解...

    C#获取SQL server数据库存储过程脚本,可重复执行

    C#获取SQL server数据库存储过程脚本,可重复执行.用于给数据库升级的打升级包的时候,十分方便

    数据库存储过程及触发器

    数据库 存储过程 触发器 基本简介

    Java调用数据库存储过程[mysql测试通过]

    在Java编程中,调用数据库存储过程是一种常见的操作,特别是在处理复杂的业务逻辑或者批量数据操作时。本篇文章将深入探讨如何使用Java与MySQL数据库进行交互,实现调用存储过程,并提供一个测试通过的实例。 首先...

    数据库存储过程 好东西啊

    数据库存储过程是数据库管理系统中的一种重要特性,它是由一组预编译的SQL语句和控制流语句组成的程序,主要用于实现特定的数据库操作。在数据库系统中,存储过程扮演着提高性能、增强安全性、简化复杂操作和降低...

    基于oracle数据库存储过程的创建及调用.docx

    基于oracle数据库存储过程的创建及调用.docx

    数据库存储过程与触发器.ppt

    数据库存储过程与触发器 数据库存储过程是存储在服务器上的预编译集合,由 SQL 语句和控制流语句组成。存储过程可以划分为系统存储过程和用户存储过程。系统存储过程的命名通常以“sp_”作为前缀,并且存储于 ...

    示例3 如何曝露数据库存储过程

    数据库存储过程是数据库管理系统中一组预编译的SQL语句,它们封装在一起,可以作为一个单元进行执行,提供了更高效、安全的数据操作方式。在本文中,我们将深入探讨如何曝露数据库存储过程,以及这一操作背后可能...

    创建数据库存储过程

    连接数据库,自动创建数据库中所有表的存储过程

Global site tag (gtag.js) - Google Analytics