跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

在 DBeaver 中创建、修改和执行 SQL 存储过程与函数

介绍如何在 DBeaver 客户端中操作 MS SQL Server 的存储过程和函数。内容包括前提条件检查、创建(含输入输出参数)、执行调用、修改及删除对象的具体 T-SQL 语法示例。通过标准 SQL 脚本实现,无需特殊工具,适用于熟悉基本 SQL 的用户进行数据库逻辑开发与管理。

LinuxPan发布于 2026/3/26更新于 2026/10/17108 浏览
在 DBeaver 中创建、修改和执行 SQL 存储过程与函数

在 DBeaver 等数据库客户端中,可以编写和执行存储过程与函数,因为它们本质上是 SQL 脚本的集合。只需在查询编辑器中编写 CREATE PROCEDURE 或 CREATE FUNCTION 语句并执行即可。

1. 前提条件

确保:

  • 已通过 DBeaver 成功连接到 MS SQL Server 数据库。
  • 使用的数据库用户拥有 CREATE PROCEDURE 和 CREATE FUNCTION 的权限。

2. 创建存储过程 (Stored Procedure)

在 MS SQL Server 中,存储过程可以有输入参数(IN)、输出参数(OUT),并且可以返回结果集。

示例:创建一个简单的存储过程

该存储过程根据输入的 CustomerID 返回客户的订单信息。

CREATE PROCEDURE GetCustomerOrders @CustomerID INT AS BEGIN 
    SET NOCOUNT ON; -- 关闭计数消息 
    SELECT OrderID, OrderDate, TotalAmount FROM Orders WHERE CustomerID = @CustomerID ORDER BY OrderDate DESC; 
END GO

在 DBeaver 中执行以上代码

  1. 在 DBeaver 中打开一个 SQL 编辑器。
  2. 将上述代码粘贴到编辑器中。
  3. 确保已选择正确的数据库。
  4. 点击执行按钮或按快捷键执行。

执行成功后,可以在 DBeaver 的数据库导航树中看到新创建的存储过程:数据库 -> 可编程性 -> 存储过程 -> dbo.GetCustomerOrders

如何执行存储过程

创建好之后,可以通过以下方式调用它:

-- 方法一:使用 EXEC
EXEC GetCustomerOrders @CustomerID = 101;

-- 方法二:如果是查询窗口,可以直接输入存储过程名并按执行
GetCustomerOrders 101;

执行后,下方的结果集窗口就会显示该客户的所有订单。

3. 创建函数 (Function)

在 MS SQL Server 中,函数分为标量值函数(返回单个值)和表值函数(返回一个表)。

示例 1:创建一个标量值函数

该函数根据输入的订单总金额计算折扣。

CREATE FUNCTION dbo.CalculateDiscount (@TotalAmount DECIMAL(18, 2)) RETURNS DECIMAL(18, 2) AS BEGIN 
    DECLARE @Discount DECIMAL(18, 2);
    IF @TotalAmount > 1000 SET @Discount = @TotalAmount * 0.1; -- 10% 折扣
    ELSE IF @TotalAmount > 500 SET @Discount = @TotalAmount * 0.05; -- 5% 折扣
    ELSE SET @Discount = 0;
    RETURN @Discount;
END GO

调用标量值函数

SELECT OrderID, TotalAmount, dbo.CalculateDiscount(TotalAmount) AS Discount FROM Orders;

示例 2:创建一个表值函数

该函数返回指定年份的所有订单,它的返回值是一个表。

CREATE FUNCTION dbo.GetOrdersByYear (@Year INT) RETURNS TABLE AS RETURN (
    SELECT OrderID, CustomerID, OrderDate, TotalAmount FROM Orders WHERE YEAR(OrderDate) = @Year
); GO

调用表值函数

SELECT * FROM dbo.GetOrdersByYear(2023);

你可以像查询普通表一样使用它,甚至可以在 JOIN 中使用。

4. 修改和删除

修改存储过程或函数

如果需要修改已存在的存储过程或函数,可以使用 ALTER 语句。例如:

ALTER PROCEDURE GetCustomerOrders @CustomerID INT, @StartDate DATE = NULL -- 添加一个可选的开始日期参数
AS BEGIN 
    SET NOCOUNT ON; 
    SELECT OrderID, OrderDate, TotalAmount FROM Orders WHERE CustomerID = @CustomerID AND (@StartDate IS NULL OR OrderDate >= @StartDate) -- 使用新参数
    ORDER BY OrderDate DESC; 
END GO

ALTER 的语法与 CREATE 非常相似,只需将 CREATE 替换为 ALTER 即可。

删除存储过程或函数

-- 删除存储过程
DROP PROCEDURE IF EXISTS dbo.GetCustomerOrders;

-- 删除函数
DROP FUNCTION IF EXISTS dbo.CalculateDiscount;

注意:DROP 操作会永久删除对象,请谨慎操作。建议在删除前做好备份。

总结

在 DBeaver(或任何其他 SQL 客户端)中操作 MS SQL Server 的存储过程和函数,和在 SQL Server Management Studio (SSMS) 中操作是完全一样的,因为你只是在执行标准的 T-SQL 语句。

核心步骤:

  1. 打开 SQL 编辑器。
  2. 编写 CREATE PROCEDURE 或 CREATE FUNCTION 语句。
  3. 执行语句。
  4. 在数据库导航树中找到并管理你的对象。
  5. 使用 EXEC (对于存储过程) 或 SELECT (对于函数) 来调用它们。

目录

  1. 1. 前提条件
  2. 2. 创建存储过程 (Stored Procedure)
  3. 示例:创建一个简单的存储过程
  4. 在 DBeaver 中执行以上代码
  5. 如何执行存储过程
  6. 3. 创建函数 (Function)
  7. 示例 1:创建一个标量值函数
  8. 调用标量值函数
  9. 示例 2:创建一个表值函数
  10. 调用表值函数
  11. 4. 修改和删除
  12. 修改存储过程或函数
  13. 删除存储过程或函数
  14. 总结

更多推荐文章

查看全部
  • 解决时间序列预测中 VMD 算法导致信息泄露的方法
  • AIOps 实践:基于 Dify+LangBot 实现飞书智能体对话机器人
  • 自然语言处理在社交媒体分析中的应用与实战
  • FARS 全自动科研系统:多智能体架构与工业化科研范式
  • 数据结构核心:栈
  • Flutter 三方库 flutter_dropzone 的鸿蒙化适配指南
  • 基于 JSP 的志愿者管理系统设计与实现
  • 大语言模型联邦微调综述:挑战、方法与未来方向
  • Fanuc 机器人与 PLC 基于 Ethernet/IP 的高速通信实战
  • OpenCV Mat 类:基本图像容器详解
  • 无人机光伏巡检:低空经济下的运维革新与实战
  • JWT 安全机制与最佳实践指南
  • Git 安装流程、环境配置与基础使用步骤
  • AI Agent 智能体核心架构与实战解析
  • Python 从入门到精通:100 课系统学习路径
  • Spring MVC 入门:MVC 模式与 RequestMapping 注解详解
  • Java Swing 界面美化技巧与实践
  • Git 推送报错 src refspec main does not match any 解决
  • Z-Image-Turbo AI 绘画壁纸生成实战教程
  • FANUC 机器人机架号与插槽号配置指南

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online