删除存储过程
Drop Procedure 存储过程名
创建一个简单的有添加作用的存储过程
CREATE PROCEDURE ProInsertStu 存储过程名
@Name nvarchar(20), 存储过程中的参数前要加@后要加类型,多个参数之间用逗号隔开,这些参数就是要付给(直接执行或其他应用程序调用)该存储过程的值
@Age smallint
AS AS后面跟SQL语句,声明变量,给变量赋值,给参数赋值等
insert into student ([Name],Age) values (@Name,@Age);
执行存储过程
exec ProInsertStu '李刚',32
创建一个简单的有修改作用的存储过程
CREATE PROCEDURE ProUpdateStu
@Name nvarchar(20),
@Age smallint,
@ID int 最后一个参数不用加逗号
AS
update student set [Name]=@Name,Age=@Age where ID=@ID;
执行存储过程
exec ProUpdateStu '王刚',34,1
IF...ELSE IF...
CREATE PROCEDURE ProIFELSE
@Name nvarchar(20) 只有一个参数,后不用加逗号
AS
IF @Name='黄刚'
BEGIN
insert into student ([Name],Age) values ('黄刚',35); SQL语句后要加分号
END
ELSE IF @Name='基冈'
BEGIN
insert into student ([Name],Age) values ('曼联',36);
END
ELSE IF @Name='桂刚'
BEGIN
update student set [Name]=@Name where [Name]='曼联';
END
声明变量及给变量赋值
CREATE PROCEDURE ProVariable
@Name nvarchar(20)
AS 在AS后声明及赋值变量
declare @TheAge smallint 声明变量关键字declare且变量前要加@后要加类型
set @TheAge=51 赋值变量关键字set且前要加@ 声明与赋值变量后都不用加逗号
if @TheAge>40
begin
print '年龄不允许大于40'
end
else if @TheAge<40
begin
insert into student ([name],age) values (@Name,@TheAge);
end
CREATE PROCEDURE ProVariable2
@Name nvarchar(20),
@Age int OUTPUT 这种output参数能返回其值
AS
declare @TheAge smallint
set @TheAge=(select Age from student where Name=@Name) 可以通过SQL的select语句给变量赋值
set @Age=(select Age from student where Name=@Name) 可以通过SQL的select语句给参数赋值
if @TheAge>40
begin
print '年龄不允许大于40'
end
else if @TheAge<40
begin
set @TheAge=@TheAge+1
insert into student ([name],age) values ('黑刚',@TheAge);
end
WHILE
CREATE PROCEDURE ProWhile
@Name nvarchar(20)
AS
declare @TheAge smallint
set @TheAge=(select Age from student where Name=@Name)
while @TheAge>8
begin
set @TheAge=@TheAge-1
end
insert into student ([Name],Age) values (@Name,@TheAge);
CASE...WHEN...THEN...(ELSE)...END 这里没有写在存储过程里
SELECT
当查age字段时根据age字段的值的不同进行不同的操作,但then,else后面的数据类型要与age字段的数据类型相同
当age大于34时将其减1再显示(但数据库里的值并没有改,只是显示的是这样)...age=33时...其他的按正常显示
select [name],age=case when age>34 then age-1 when age=33 then age+1 else age end from student
当name字段的值为王刚时按正常显示,其余的在name字段的值前加一个'我叫'
select [name]=case when [name]='王刚' then [name] else '我叫'+[name] end,age from student
then后面跟的就是满足条件的字段的值(如果直接写字段名就是正常显示),这时只能操作值如+-等,不能用= 赋值,但可以直接将要赋的值写上,如查到name字段的值为王刚时,不让其显示,直接写null
select [name]=case when [name]='王刚' then null else '我叫'+[name] end,age from student
UPDATE
将年龄小于36岁的年龄改成35岁,其余的年龄加8,这次可是真改了
update student set age=case when age<36 then 35 else age+8 end
这里如果不加else,或when没有涉及到的情况,这些记录的值将被设置为null(如果字段可空)或默认值(如果字段不可空)
OUTPUT参数返回值与Return返回值
被定义为OUTPUT的参数可以向使用该存储过程的应用程序返回其值
Return int or '123' Return返回值只能是整型或整型形式的字符串,且只能返回一个值
CREATE PROCEDURE
@name nvarchar(10),
@id int output
AS
select * from commanager where name=@name;
--set @id=4 直接给参数赋死值
set @id=(select commanagerid from commanager where name=@name) 用select方式动态给参数赋值
return @id 这里@id是int类型,所以可以用return形式返回
--return @@rowcount 返回受影响的记录数
--return @@identity 返回最后一次插入的记录的标识号
如
USE AdventureWorks2008R2;
GO
UPDATE HumanResources.Employee
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO
@@***为SQLServer内置的全局变量,可根据具体情况选择是直接使用还是作为返回值返回
http://qsfwy.iteye.com/blog/251256|荐
http://www.cnblogs.com/junyistar/archive/2007/07/13/817315.html
http://www.cnblogs.com/junyistar/archive/2007/06/07/775296.html
http://www.cnblogs.com/chenxizhang/archive/2009/03/19/1416217.html(输出参数)
http://www.cnblogs.com/Nina-piaoye/archive/2006/09/18/507183.html
http://www.cppblog.com/Lee7/archive/2008/06/19/53962.html
http://www.cnblogs.com/hongyin163/archive/2008/10/27/1320389.html(Case)
http://kb.cnblogs.com/page/106721/
分享到:
相关推荐
根据提供的文档标题、描述、标签以及部分内容,我们可以总结出以下关于存储过程的创建与使用的相关知识点。 ### 一、存储过程的基本概念 存储过程是一种在数据库中存储并编译好的SQL程序,它能够接受输入参数,...
在SQL Server 2008中,存储过程和触发器是数据库管理中不可或缺的重要组成部分,它们为数据库系统提供了更高级别的功能和控制。本篇将深入解析这两个概念及其在实际应用中的具体用法。 首先,存储过程是预编译的SQL...
以下是关于存储过程和触发器的详细解释: 1. **存储过程的功能特点**: - **复用性**:存储过程可以被多次调用,减少了重复编写SQL语句的工作。 - **安全性**:可以通过权限控制限制对存储过程的访问,保护数据库...
### 存储过程相关知识点详解 #### 一、存储过程简介 存储过程是一种预编译的SQL代码集合,存储在数据库服务器上,并可被应用程序调用执行。它们提供了多种优势,包括性能提升(通过减少网络流量和利用预编译代码)...
通过上述步骤,我们可以有效地解决在部署过程中遇到的关于存储过程缺失的问题。正确地使用`mysqldump`工具不仅能够确保存储过程的完整导出,还能避免因触发器或函数安全问题而导致的导入失败。这对于维护数据库的...
这个压缩包中的"stored_procedure_tutorial.txt"文件很可能包含了关于存储过程的详细教程,包括它们的工作原理、创建、执行以及优势等。 存储过程的主要优点包括性能提升、代码重用、增强安全性、减少网络流量以及...
以下是一些关于存储过程命名的重要原则和方法: 一、命名规范 1. **清晰明了**:存储过程的名称应该直接反映其功能或作用,避免使用模糊不清的名称。例如,如果一个存储过程负责插入用户数据,可以命名为`Insert...
这提供了关于存储过程作用范围的快速视觉提示。 3. **可选字段名**: 当存储过程根据某个特定字段进行筛选时,可以在表名之后加入该字段名。例如,如果存储过程按`CoName`或`ClientID`筛选,可以命名为`...
以下是一些MySQL5中关于存储过程的新特性及其详解: 1. **参数化**:MySQL5允许在创建存储过程时定义输入、输出和输入/输出参数。这使得存储过程可以像函数一样接受参数,并返回结果,增加了程序的复用性和灵活性。...
在IT领域,尤其是在数据库管理与优化中,存储过程的解锁是一项关键技能,尤其对于Oracle数据库而言。当存储过程被锁定时,可能会影响系统的性能和稳定性,因此掌握如何解锁存储过程至关重要。以下是对“oracle存储...
以下是关于Pb调用存储过程以及存储过程创建的详细知识: 首先,`Pb调用存储过程`通常是通过Database窗口或者DataWindow对象来实现的。在Pb中,我们可以通过以下步骤调用存储过程: 1. **声明存储过程**:在Pb的...
SAP HANA是一个高性能的内存数据库系统,它提供了一系列功能强大的工具来进行数据分析、应用开发、存储过程编写等操作。其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了...
1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作数据库中的重要对象,对于设计良好的数据库应用程序...
3. **SQL存储过程基础语法.doc**:这是一个关于存储过程基础知识的文档,可能包括了创建、调用、参数传递以及存储过程的管理等内容。 通过这些资源,你可以系统地学习和掌握SQL的基本用法和存储过程的编写技巧,...
存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...
SQL Server存储过程是一种预编译的SQL代码集合,它们允许数据库开发者封装复杂的业务逻辑和数据操作,提高数据库应用的性能和可维护性。然而,由于存储过程的源代码通常是不可见的,对于需要查看或修改这些过程的...
标题中的“MSSQL自身存储过程的一个注入”指的是在Microsoft SQL Server(MSSQL)数据库系统中,关于存储过程的安全漏洞问题。存储过程是预编译的SQL代码集合,允许数据库管理员和开发者创建复杂的数据库操作逻辑。...
在Oracle数据库中,存储过程是一种预编译的SQL和PL/SQL代码集合,可以执行复杂的业务逻辑或数据处理任务。当需要从存储过程中返回多个结果时,通常会使用结果集。本篇将深入探讨如何在Oracle存储过程中创建并返回一...
存储过程参数查看器和存储过程助手是两个非常实用的工具,它们帮助数据库管理员(DBA)和开发人员更有效地管理和调试存储过程。 1. **存储过程**: - 存储过程是由用户创建的一组SQL语句,保存在数据库中,可以多...