温馨提示×

Ubuntu SQL Server存储过程使用教程

小樊
41
2025-12-18 03:04:13
栏目: 云计算

Ubuntu 上使用 SQL Server 存储过程教程

一 环境准备与连接

  • Ubuntu 上安装 Microsoft SQL Server for Linux,完成安装后使用命令行工具 sqlcmd 连接数据库实例。示例:sqlcmd -S localhost -U your_username -P your_password。如需图形化管理,可安装 SQL Server Management Studio(SSMS) 或在 Visual Studio Code 中安装 SQL Server(mssql) 扩展进行连接与编写。以上工具与连接方式适用于在 Linux 环境下进行存储过程的创建与管理。

二 基本语法与第一个存储过程

  • 存储过程基本语法:
    CREATE PROCEDURE ProcedureName
        @Parameter1 DataType,
        @Parameter2 DataType,
        ...
    AS
    BEGIN
        -- SQL statements here
    END;
    GO
    
  • 示例 1 无参查询
    USE YourDatabase;
    GO
    
    CREATE PROCEDURE GetAllEmployees
    AS
    BEGIN
        SET NOCOUNT ON;
        SELECT * FROM Employees;
    END;
    GO
    
    EXEC GetAllEmployees;
    
  • 示例 2 带输入与输出参数
    USE YourDatabase;
    GO
    
    CREATE PROCEDURE AddNumbers
        @Number1 INT,
        @Number2 INT,
        @Sum INT OUTPUT
    AS
    BEGIN
        SET NOCOUNT ON;
        SET @Sum = @Number1 + @Number2;
    END;
    GO
    
    DECLARE @Result INT;
    EXEC AddNumbers @Number1 = 5, @Number2 = 10, @Sum = @Result OUTPUT;
    SELECT @Result AS Result;
    
  • 提示:在批处理结尾使用 GO 分隔;在存储过程中使用 SET NOCOUNT ON 可抑制“受影响的行数”消息,减少网络流量并提升性能。

三 管理存储过程

  • 查看对象信息
    EXEC sp_help 'AddNumbers';
    
  • 修改存储过程
    ALTER PROCEDURE AddNumbers
        @Number1 INT,
        @Number2 INT,
        @Sum INT OUTPUT
    AS
    BEGIN
        SET NOCOUNT ON;
        SET @Sum = @Number1 + @Number2 * 2; -- 修改逻辑
    END;
    GO
    
  • 删除存储过程
    DROP PROCEDURE AddNumbers;
    GO
    
  • 以上命令覆盖常用的查看、修改与删除操作,适用于日常维护与迭代开发。

四 在 Ubuntu 终端的完整操作示例

  • 以下示例演示从连接、建库、建表、创建存储过程到调用的全流程:
    -- 1) 连接数据库
    sqlcmd -S localhost -U sa -P '<YourStrong@Passw0rd>'
    
    -- 2) 创建数据库与表
    CREATE DATABASE DemoDB;
    GO
    
    USE DemoDB;
    GO
    
    CREATE TABLE Products (
        Id INT IDENTITY(1,1) PRIMARY KEY,
        Name NVARCHAR(100),
        Price DECIMAL(10,2)
    );
    GO
    
    INSERT INTO Products (Name, Price) VALUES
        (N'Apple', 3.50),
        (N'Banana', 2.00),
        (N'Cherry', 5.00);
    GO
    
    -- 3) 创建带参数的存储过程:按价格区间查询
    CREATE PROCEDURE GetProductsByPrice
        @MinPrice DECIMAL(10,2),
        @MaxPrice DECIMAL(10,2)
    AS
    BEGIN
        SET NOCOUNT ON;
        SELECT Id, Name, Price
        FROM Products
        WHERE Price BETWEEN @MinPrice AND @MaxPrice
        ORDER BY Price;
    END;
    GO
    
    -- 4) 调用存储过程
    EXEC GetProductsByPrice @MinPrice = 2.00, @MaxPrice = 4.00;
    GO
    
  • 要点:在 sqlcmd 交互中,每条批处理以 GO 结束;调用存储过程使用 EXEC,输出结果直接在终端显示。

五 常见问题与最佳实践

  • 权限要求:执行创建、修改、删除存储过程需要相应的 CREATE/ALTER/DROP PROCEDURE 权限;请确保连接账户具备所需权限。
  • 参数与类型:调用时参数的数量与数据类型需与定义一致;输出参数需使用 OUTPUT 关键字并在调用处声明变量接收。
  • 性能建议:在存储过程开头使用 SET NOCOUNT ON,减少不必要消息返回,降低网络开销。
  • 工具选择:在 Ubuntu 终端下推荐使用 sqlcmd;如需更友好的图形界面,可使用 SSMSVS Code + mssql 扩展进行连接与开发。

0