首页 > 技术文章 > SQLServer使用存储过程 (使用sql server manage studio图形界面)

kyo413 2021-05-07 17:33 原文

本来是想写windev调用存储过程,结果sqlserver先折腾了我好久。个人主要参考这篇教程   SQL Server的存储过程怎么写?_百度知道 (baidu.com)sqlserver存储过程入门例子加讲解 - 百度文库 (baidu.com)  还有sql自带的文档 

 ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_1devconc/html/76e8a6ba-1381-4620-b356-4311e1331ca7.htm

 

 

把大象装冰箱第一步打开冰箱门  sqlServer2008R2下载地址     链接:https://pan.baidu.com/s/1VZVCrkgz9kcerQhMrAjbLg 提取码:1234

以管理员身份打开SQL Server Manegment  stdudio    然后是创建数据库,在数据库上点击右键,新建数据库

 

 

这里建一个测试表,

 

 

 

创建一个账号,右键点击用户,点新建用户,这里新建了一个test用户

 

 在安全性,登录名上  给test 用户配置密码

 

这样别人就可以用用户名test登录  test数据库

在test数据库里找可编程性,就能看到存储过程

这里是官方文档

本主题介绍如何使用 SQL Server Management Studio 中的对象资源管理器创建 Transact-SQL 存储过程,并提供一个在 AdventureWorks2008R2 数据库中创建简单存储过程的示例。

创建存储过程
在对象资源管理器中,连接到某个数据库引擎实例,再展开该实例。

展开“数据库”、存储过程所属的数据库以及“可编程性”。

右键单击“存储过程”,再单击“新建存储过程”。

在“查询”菜单上,单击“指定模板参数的值”。

在“指定模板参数的值”对话框中,“值”列包含参数的建议值。接受这些值或将其替换为新值,再单击“确定”。

在查询编辑器中,使用过程语句替换 SELECT 语句。

若要测试语法,请在“查询”菜单上,单击“分析”。

若要创建存储过程,请在“查询”菜单上,单击“执行”。

若要保存脚本,请在“文件”菜单上,单击“保存”。接受该文件名或将其替换为新的名称,再单击“保存”。

安全说明: 
验证所有用户的输入。验证前请勿连接用户输入。绝对不要执行根据尚未验证的用户输入构造的命令。有关详细信息,请参阅SQL 注入。
 


创建存储过程的示例
在对象资源管理器中,连接到某个数据库引擎实例,再展开该实例。

依次展开“数据库”、AdventureWorks2008R2 数据库和“可编程性”。

右键单击“存储过程”,再单击“新建存储过程”。

在“查询”菜单上,单击“指定模板参数的值”。

在“指定模板参数的值”对话框中,输入下列所示的参数值。

参数  值  
Author
 您的姓名 
 
Create Date
 今天的日期 
 
Description
 返回雇员数据。
 
Procedure_name
 HumanResources.uspGetEmployees
 
@Param1
 @LastName
 
@Datatype_For_Param1
 nvarchar(50)
 
Default_Value_For_Param1
 NULL
 
@Param2
 @FirstName
 
@Datatype_For_Param2
 nvarchar(50)
 
Default_Value_For_Param2
 NULL
 

单击“确定”。

在查询编辑器中,使用以下语句替换 SELECT 语句:

 复制代码 
    SELECT FirstName, LastName, JobTitle, Department
    FROM HumanResources.vEmployeeDepartment
    WHERE FirstName = @FirstName AND LastName = @LastName;
 

若要测试语法,请在“查询”菜单上,单击“分析”。如果返回错误消息,则请将这些语句与上述信息进行比较,并视需要进行更正。

若要创建存储过程,请在“查询”菜单上,单击“执行”。

若要保存脚本,请在“文件”菜单上,单击“保存”。输入新的文件名,再单击“保存”。

若要运行存储过程,请在工具栏上单击“新建查询”。

在查询窗口中,输入下列语句:

 复制代码 
USE AdventureWorks2008R2;
GO
EXECUTE HumanResources.uspGetEmployees @FirstName = N'Diane', @LastName = N'Margheim';
GO
 

在“查询”菜单上,单击“执行”。

我这里先建一个无参数的存储过程,功能是删库跑路

CREATE PROCEDURE ProDeleteAll 
    -- Add the parameters for the stored procedure here
      
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    Delete from  Table_1 
END
GO

先点对勾检查语法,,然后点感叹号执行,就能在可编程性那里看到存储过程(可能要点刷新)。在存储过程名上点右键,执行存储过程,可以发现表里数据都被删除了。

,在ProDeleteAll上点右键,点执行存储过程

 

如果想查看存储过程的定义,需要这么搞,新建一个查询,输入下边

USE test;
GO
EXEC sp_helptext 'ProDeleteAll';
GO

点执行,就能看到ProDeleteAll的定义了,或者在存储sql的文件夹里直接查看sql文件

 

 

或者用下面语句是一样的执行存储过程

USE [test]
GO

DECLARE    @return_value int

EXEC    @return_value = [dbo].[ProDeleteAll]

SELECT    'Return Value' = @return_value

GO

 

 

建立一个带参数的存储过程 ,删除表里c等于输入参数的数据 

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        kyo
-- Create date: 20210527
-- Description:    删除c等于输入参数的行
-- =============================================
CREATE PROCEDURE ProcDeleteC
    -- Add the parameters for the stored procedure here
    @c int
     
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

     Delete from  Table_1 where c =  @c
END
GO

用下列命令执行

USE [test]
GO

DECLARE    @return_value int

EXEC    @return_value = [dbo].[ProcDeleteC]
        @c = "45"

SELECT    'Return Value' = @return_value

GO

 建立一个带输入参数和返回参数的存储过程 ,返回表里c等于输入参数的行的a

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        kyo
-- Create date: 
-- Description:    
-- =============================================
CREATE PROCEDURE ProRetureAWhrerC 
    -- Add the parameters for the stored procedure here
    @c int ,
    @a varchar(10) output
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT  @a = a from Table_1 
            where c = @c
END
GO

如下执行

USE [test]
GO

DECLARE    @return_value int,
        @a varchar(10)

EXEC    @return_value = [dbo].[ProRetureAWhrerC]
        @c = 445,
        @a = @a OUTPUT

SELECT    @a as N'@a'

SELECT    'Return Value' = @return_value

GO

 

推荐阅读