在Ubuntu上使用SQL Server存储过程前,需完成以下基础配置:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list)"
sudo apt-get update
sudo apt-get install -y mssql-server
安装完成后,运行sudo mssql-conf setup配置SA用户密码及实例参数。sqlcmd(命令行工具)或Visual Studio Code(VS Code,需安装“SQL Server (mssql)”扩展)连接并管理SQL Server实例。通过sqlcmd工具连接本地SQL Server(默认端口1433),命令格式如下:
sqlcmd -S localhost -U SA -P 'YourStrong@Passw0rd'
-S:指定服务器地址(本地为localhost);-U:用户名(默认SA,系统管理员);-P:密码(安装时设置的强密码)。存储过程是预编译的SQL语句集合,可通过CREATE PROCEDURE语句创建。基本语法如下:
CREATE PROCEDURE ProcedureName
@Parameter1 DataType [OUTPUT], -- 输入/输出参数(OUTPUT标识输出参数)
@Parameter2 DataType,
...
AS
BEGIN
SET NOCOUNT ON; -- 禁止返回受影响的行数,提升性能
-- SQL逻辑语句(如SELECT、INSERT、UPDATE等)
END;
GO
USE YourDatabaseName; -- 切换至目标数据库
GO
CREATE PROCEDURE GetAllEmployees
AS
BEGIN
SET NOCOUNT ON;
SELECT EmployeeID, FirstName, LastName FROM Employees;
END;
GO
CREATE PROCEDURE GetEmployeesByDepartment
@DepartmentID INT
AS
BEGIN
SET NOCOUNT ON;
SELECT EmployeeID, FirstName, LastName, DepartmentID
FROM Employees
WHERE DepartmentID = @DepartmentID;
END;
GO
CREATE PROCEDURE AddNumbers
@Number1 INT,
@Number2 INT,
@Sum INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SET @Sum = @Number1 + @Number2;
END;
GO
根据存储过程类型(是否有参数、输出参数),调用方式分为以下几种:
EXEC或EXECUTE命令。EXEC GetAllEmployees;
@参数名=值格式传递参数(推荐,避免参数顺序错误)。EXEC GetEmployeesByDepartment @DepartmentID = 1;
SELECT查看结果。DECLARE @Result INT; -- 声明变量
EXEC AddNumbers @Number1 = 5, @Number2 = 10, @Sum = @Result OUTPUT; -- 传递参数
SELECT @Result AS Result; -- 输出结果(值为15)
使用ALTER PROCEDURE语句修改现有存储过程的逻辑(不影响已有的权限设置)。示例如下:
ALTER PROCEDURE GetEmployeesByDepartment
@DepartmentID INT
AS
BEGIN
SET NOCOUNT ON;
SELECT EmployeeID, FirstName, LastName, DepartmentName
FROM Employees e
JOIN Departments d ON e.DepartmentID = d.DepartmentID -- 关联Departments表
WHERE e.DepartmentID = @DepartmentID;
END;
GO
使用DROP PROCEDURE语句删除不再需要的存储过程(若存储过程不存在,需添加IF EXISTS避免报错)。示例如下:
DROP PROCEDURE IF EXISTS GetAllEmployees; -- SQL Server 2016及以上版本支持
GO
sp_helptext系统存储过程查看创建语句。EXEC sp_helptext 'GetAllEmployees';
sys.procedures查询存储过程的基本信息(如名称、创建时间)。SELECT name, create_date, modify_date
FROM sys.procedures
WHERE name = 'GetAllEmployees';
CREATE PROCEDURE(创建)、ALTER(修改)、EXECUTE(执行)等权限;SET NOCOUNT ON减少网络传输量,避免返回不必要的元数据;TRY...CATCH块捕获异常(如语法错误、约束冲突)。