SQL Server存储过程调用入门代码示例,如何编写与执行存储过程?

文章导读
在 SQL Server 中编写与执行存储过程,首先需要使用 CREATE PROCEDURE 语句定义过程逻辑,支持输入输出参数及流程控制。执行时可通过 EXEC 或 EXECUTE 关键字调用,建议使用架构名称限定过程名以提升性能并避免冲突。系统存储过程以前缀 sp_开头,可从任何数据库执行,但推荐加 sys 架构限定。用户定义过程最好完全限定名称,数据库引擎会按特定顺序搜索架构。此外,还可使
📋 目录
  1. A SQL Server 存储过程调用入门代码示例,如何编写与执行存储过程?
  2. B 执行存储过程 - SQL Server | Microsoft Learn
  3. C SQL Server 存储过程:从入门到精通
  4. D 创建存储过程 - SQL Server | Microsoft Learn
  5. E FAQ
A A

SQL Server 存储过程调用入门代码示例,如何编写与执行存储过程?

在 SQL Server 中编写与执行存储过程,首先需要使用 CREATE PROCEDURE 语句定义过程逻辑,支持输入输出参数及流程控制。执行时可通过 EXEC 或 EXECUTE 关键字调用,建议使用架构名称限定过程名以提升性能并避免冲突。系统存储过程以前缀 sp_开头,可从任何数据库执行,但推荐加 sys 架构限定。用户定义过程最好完全限定名称,数据库引擎会按特定顺序搜索架构。此外,还可使用 sp_executesql 执行动态 SQL 语句,注意参数定义需匹配。

执行存储过程 - SQL Server | Microsoft Learn

本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中执行存储过程。有不同方法执行存储过程。第一种方法和最常见的方法供应用程序或用户调用过程。另一种方法是将存储过程设置为在启动 SQL Server 实例时自动运行。当应用程序或用户调用过程时,调用中显式声明了 Transact-SQL EXECUTE 或 EXEC 关键字。如果过程是 Transact-SQL 批处理中的第一条语句,那么不使用关键字 EXEC 也可调用并执行此过程。Limitations 与系统过程名称匹配时使用调用数据库排序规则。因此,在过程调用中始终使用系统过程名称的正确大小写形式。例如,如果在具有区分大小写的排序规则的数据库上下文中执行,以下代码失败:SQL 复制 EXEC SP_heLP;-- Fails to resolve because SP_heLP doesn't equal sp_help 若要显示确切的系统过程名称,请查询 sys.system_objects 和 sys.system_parameters 目录视图。如果用户定义的过程与系统过程同名,则可能不会执行用户定义的过程。Recommendations 使用以下建议来执行存储过程。系统存储过程 系统过程以前缀 sp_开头。因为从逻辑意义上讲,这些系统过程出现在所有用户定义的数据库和系统定义的数据库中,所以可以从任何数据库执行这些过程,而不必完全限定过程名称。但是,建议使用 sys 架构名称对所有系统过程名称进行架构限定,以防止名称冲突。以下示例说明调用系统过程的推荐方法。SQL 复制 EXEC sys.sp_who; 用户定义的存储过程 当执行用户定义的过程时,最好使用架构名称限定过程名称。这种做法使性能得到小幅提升,因为 数据库引擎 不必搜索多个架构。如果某个数据库在多个架构中具有同名过程,则使用架构名称还可以防止执行错误的过程。以下示例演示执行用户定义过程的推荐方法。此过程接受两个输入参数。有关指定输入参数和输出参数的信息,请参阅在存储过程中指定参数。SQL 复制 EXECUTESalesLT.uspGetCustomerCompany @LastName = N'Cannon', @FirstName = N'Chris'; GO Or: SQL 复制 EXEC SalesLT.uspGetCustomerCompany N'Cannon', N'Chris'; GO 如果指定了非限定的用户定义过程,则 数据库引擎 按以下顺序搜索此过程:sys 架构。调用方的默认架构 (如果它在批处理或动态 SQL 中(消息于 2026 年 4 月 24 日发布)

SQL Server 存储过程:从入门到精通

一、存储过程入门 1. 什么是存储过程?存储过程是一组预编译的 SQL 语句集合,存储在数据库中,可以通过调用执行。简单来说,它就像数据库中的“小程序”,可以重复使用。优点:提高效率:SQL 语句预编译,执行快。封装逻辑:复杂逻辑只需一次编写。安全性:可以控制访问权限,避免直接操作表。易维护:修改存储过程即可更新业务逻辑。2. 存储过程的基本语法 CREATEPROCEDURE 存储过程名 AS BEGIN --SQL 语句 SELECT*FROMStudents; END; AI 写代码 调用存储过程:EXEC 存储过程名;-- 或者 EXECUTE 存储过程名;AI 写代码 小技巧:可以用 sp_helptext 存储过程名查看存储过程内容。二、存储过程进阶 1. 带参数的存储过程 存储过程可以接收参数,让 SQL 更灵活:CREATEPROCEDUREGetStudentByAge @AgeINT AS BEGIN SELECT*FROMStudents WHEREAge= @Age; END; AI 写代码 调用带参数的存储过程:EXECGetStudentByAge@Age=18; AI 写代码 注意:参数可以是输入参数 (IN)、输出参数 (OUT),也可以同时使用。2. 输出参数 输出参数用于返回单个值给调用者:CREATEPROCEDUREGetStudentCount @TotalCountINTOUTPUT AS BEGIN SELECT@TotalCount=COUNT(*)FROMStudents; END; AI 写代码 调用输出参数:DECLARE@CountINT; EXECGetStudentCount@TotalCount=@CountOUTPUT; PRINT@Count; AI 写代码 3. 条件逻辑与循环 存储过程支持 IFELSE 和 WHILE 等流程控制:CREATEPROCEDURECheckStudentAge @AgeINT AS BEGIN IF@Age>= 18(撰于 2025 年 12 月 9 日)

创建存储过程 - SQL Server | Microsoft Learn

创建存储过程 适用于:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics 分析平台系统 (PDW)Microsoft Fabric 中的 SQL 数据库 本文介绍如何使用 SQL Server Management Studio 和 Transact-SQL CREATE PROCEDURE 语句来创建 SQL Server 存储过程。Permissions 需要在数据库中有 CREATE PROCEDURE 权限,对在其中创建过程的架构有 ALTER 权限。创建存储过程 可以使用 SQL Server Management Studio(SSMS) 或 SSMS 查询窗口中 Transact-SQL 来执行存储过程。安装最新版本的 SQL Server Management Studio (SSMS)。注意 本文中的示例存储过程使用示例 AdventureWorksLT2022(SQL Server) 或 AdventureWorksLT(Azure SQL 数据库) 数据库。有关如何获取和使用 AdventureWorksLT 示例数据库的说明,请参阅 AdventureWorks 示例数据库。使用 SQL Server Management Studio 要在 SSMS 中创建存储过程,请执行以下操作:在“对象资源管理器”中,连接到 SQL Server 或 Azure SQL 数据库的实例。有关更多信息,请参阅以下快速入门:使用 SSMS 连接 SQL Server 实例并进行查询 使用 SSMS 连接到 Azure SQL 数据库或 Azure SQL 托管实例并进行查询 展开实例,然后展开“数据库”。展开所需的数据库,然后展开“可编程性”。右键单击“存储过程”,然后选择“新建”>“存储过程”。此时会打开一个新的查询窗口,其中包含存储过程的模板。默认的存储过程模板具有两个参数。如果存储过程的参数更少、更多或没有参数,请根据需要在模板中添加或删除参数行。在“查询”菜单上,选择“指定模板参数的值”。在“指定模板参数值”对话框中,提供“值”字段的以下信息:作者:将 Name 替换为你自己的名称。创建日期:输入今天的日期。说明:简要描述该过程的作用。Procedure_Name:将 ProcedureName 替换为新的存储过程名称。@Param1:将@p1 替换为第一个参数名称,例如 @ColumnName1。@Datatype_For_Param1:根据需要,将 int 替换为第一个参数的数据类型,例如(资料日期为 2026 年 4 月 2 日)

SQL Server存储过程调用入门代码示例,如何编写与执行存储过程?

FAQ

如何执行带输出参数的存储过程?

声明一个变量,然后在 EXEC 语句中使用 OUTPUT 关键字将该变量传递给存储过程的输出参数,例如 DECLARE @Count INT; EXEC GetStudentCount @TotalCount=@Count OUTPUT;

系统存储过程需要完全限定名称吗?

SQL Server存储过程调用入门代码示例,如何编写与执行存储过程?

不需要,系统过程以前缀 sp_开头,可以从任何数据库执行而不必完全限定过程名称,但建议使用 sys 架构名称对所有系统过程名称进行架构限定,以防止名称冲突。

创建存储过程需要什么权限?

需要在数据库中有 CREATE PROCEDURE 权限,并且对在其中创建过程的架构有 ALTER 权限,可以使用 SQL Server Management Studio 或 Transact-SQL 来创建。