计算机系统应用教程网站

网站首页 > 技术文章 正文

c#.Net.NetCore面试(四十六)SQL常用存储过程(一看就懂篇)

btikc 2024-11-08 10:52:42 技术文章 4 ℃ 0 评论

SQL存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程可以看作是对一系列SQL操作的封装,用户只需调用存储过程并传入参数,就可以执行这些操作。

以下是一些常用的SQL存储过程的示例,这些示例涵盖了不同的数据库系统(如MySQL、SQL Server、Oracle等),但请注意,具体的语法和功能可能会因数据库系统的不同而有所差异。

1.在MySQL中创建一个简单的存储过程

DELIMITER //  
CREATE PROCEDURE SimpleProcedure()  
BEGIN  
  SELECT 'Hello, World!';  
END //  
DELIMITER ;

2.在SQL Server中创建一个带有输入参数的存储过程

CREATE PROCEDURE GetEmployeeDetails  
    @EmployeeID INT  
AS  
BEGIN  
    SELECT * FROM Employees WHERE ID = @EmployeeID;  
END;

3.在Oracle中创建一个带有输出参数的存储过程

CREATE OR REPLACE PROCEDURE GetEmployeeCount(p_count OUT NUMBER) IS  
BEGIN  
    SELECT COUNT(*) INTO p_count FROM Employees;  
END;  
/

4.在MySQL中创建一个带有条件逻辑的存储过程

DELIMITER //  
CREATE PROCEDURE ConditionalProcedure(IN param INT)  
BEGIN  
    IF param = 1 THEN  
        SELECT 'One';  
    ELSEIF param = 2 THEN  
        SELECT 'Two';  
    ELSE  
        SELECT 'Other';  
    END IF;  
END //  
DELIMITER ;

5.在SQL Server中创建一个带有事务的存储过程

CREATE PROCEDURE TransferFunds  
    @FromAccount INT,  
    @ToAccount INT,  
    @Amount MONEY  
AS  
BEGIN  
    BEGIN TRANSACTION;  
  
    UPDATE Accounts SET Balance = Balance - @Amount WHERE ID = @FromAccount;  
  
    IF @@ROWCOUNT = 0  
    BEGIN  
        ROLLBACK TRANSACTION;  
        RAISERROR('From account does not exist or insufficient funds.', 16, 1);  
        RETURN;  
    END  
  
    UPDATE Accounts SET Balance = Balance + @Amount WHERE ID = @ToAccount;  
  
    IF @@ROWCOUNT = 0  
    BEGIN  
        ROLLBACK TRANSACTION;  
        RAISERROR('To account does not exist.', 16, 1);  
        RETURN;  
    END  
  
    COMMIT TRANSACTION;  
END;

这些示例只是存储过程的一些基本用法,实际上,存储过程可以更加复杂,并且可以包含更多的逻辑和功能。在设计和使用存储过程时,需要根据具体的业务需求和数据库系统的特性来编写和调整。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表