Sql server存儲過程和基本函數編寫
程序员文章站
2022-04-21 15:47:28
...
1、存儲過程編寫
在調試和編寫存儲過程中可使用print @變量 + return 來返回變量的值和結束執行。
USE [庫名]
GO
/****** Object: StoredProcedure [dbo].[存儲過程名稱] Script Date: 2021/7/4 14:00:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Creat by 2018/1/18
--執行存儲過程
--EXEC [庫名].[dbo].[存儲過程名稱] '@Variable1',' @Variable2'
--創建存儲過程
-- Create Procedure [dbo].[存儲過程名稱]
--變更存儲過程
ALTER Procedure [dbo].[存儲過程名稱]
--定義傳輸過來的變量
@Variable1 varchar(30),
@Variable12 varchar(15)
As
--定義使用SP過程中的變量
Declare @count int
select @count=count(*) from table1
where table1.Column_name= @Variable1 and table1.Column_name=Variable12
IF @count=0
BEGIN
RAISERROR ( '請確認數據是否正確!' ,11,1)
END
ELSE
BEGIN
--此處為SP實際執行過程中的相關的Sql語句
END
2、基本函數編寫
在編寫調試的過程中,可使用return @變量返回其中的變量的值。
USE [庫名]
GO
/****** Object: UserDefinedFunction [dbo].[函數名稱] Script Date: 2021/7/4 14:06:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: GG
-- Create date: 2019/11/28
-- Description: 獲取狀態
-- =============================================
--調用函數
--STATUS = DBO.FUN_GET_ENG_STATUS (@Variable1,@Variable2)
--創建函數
--Create FUNCTION [dbo].[函數名稱]
--變更函數
ALTER FUNCTION [dbo].[函數名稱]
(
--定義傳輸到函數的基本變量
@Variable1 VARCHAR(20),
@Variable2 VARCHAR(5)
)
RETURNS VARCHAR(10)
AS
BEGIN
--定義函數執行過程中使用的變量
DECLARE @STATUS VARCHAR(10)
DECLARE @Variable3 VARCHAR(20)
--最終返回一個結果
RETURN @STATUS
END
3、在存儲過程中使用循環(游標)
當需要循環的數據量不大時可使用,否則執行時間會很長。
USE [庫名]
GO
/****** Object: StoredProcedure [dbo].[存儲過程名稱] Script Date: 2021/7/4 14:00:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--本存儲用於設置For量產版本 Creat by 2018/1/18
--執行存儲過程
--EXEC [庫名].[dbo].[存儲過程名稱] '@Variable1',' @Variable2'
--創建存儲過程
-- Create Procedure [dbo].[存儲過程名稱]
--變更存儲過程
ALTER Procedure [dbo].[存儲過程名稱]
--定義傳輸過來的變量
@Variable1 varchar(30),
@Variable2 varchar(15)
As
--定義使用SP過程中的變量
Declare @count int
--定義游標使用過程中的變量
DECLARE @flag char(15)
BEGIN
--此處為實際執行過程中的相關的Sql語句
--創建一個臨時表
create table #TABLE(
column1 varchar(15) ,
column1 varchar(15) ,
column1 varchar(15)
)
DECLARE flag CURSOR --定义游标
FOR ( SELECT distinct flag FROM TABLE1 ) --查出需要的集合放到游标中
OPEN flag; --打开游标
FETCH NEXT FROM flag INTO @flag --读取第一行数据(将TABLE1表中的flag放到@flag变量中)
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS (SELECT distinct flag FROM TABLE1)
--此處為實際執行過程中的相關的Sql語句
FETCH NEXT FROM flag INTO @flag --读取下一行数据
END
CLOSE flag --关闭游标
DEALLOCATE flag --释放游标
END
上一篇: 关于PHP的前途二