SQL Server User-defined Function Create and Call 與Stored Procedures 不同

1.創建方法:

1.1 Function

  1. CREATE FUNCTION [OWNER].[FUNCTION NAME] (PARAMETER LIST)  
  2. RETURNS (return_type_spec) AS  
  3. BEGIN 
  4.     (FUNCTION BODY) 
  5. END

例1:去除第一位為'0'的Function(LtrimZero) 

  1. CREATE FUNCTION dbo.LtrimZero(@d nvarchar(15))  
  2. RETURNS nvarchar(15) AS  
  3. BEGIN 
  4.      WHILE (SUBSTRING(@d,1,1) = '0')
  5.      BEGIN
  6.         SET @d = SUBSTRING(@d, 2, LEN(@d) -1)
  7.      END
  8.      RETURN @d
  9. END

例2:日期轉換成字符串Function(Date2String)

  1. CREATE FUNCTION dbo.Date2String(@d AS nvarchar(10))  --增加長度8-->10 (20080101-->2008/01/01)
  2. RETURNS nvarchar(10) AS  
  3. BEGIN 
  4.     IF @d='00000000'
  5.          SET @d=''
  6.     ELSE
  7.          SET @d=SUBSTRING(@d,1,4) + '/' + SUBSTRING(@d,5,2) + '/' + SUBSTRING(@d,7,2)
  8.     RETURN @d
  9. END

1.2 Procedures

  1. CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS

例1:Procedures(Check_Rule)

  1. CREATE PROCEDURE dbo.Check_Rule 
  2. (
  3.     @username nvarchar(20),
  4.     @password nvarchar(100),
  5.     @RMSG nvarchar(100) OUTPUT
  6. )
  7. AS
  8.    BEGIN
  9.       IF EXISTS(SELECT lsttime FROM tblRule WHERE username=@username AND password=@password)
  10.            BEGIN
  11.                SET @RMSG=''
  12.                UPDATE tblRule SET lsttime=GETDATE() WHERE username=@username
  13.            END 
  14.       ELSE
  15.            SET @RMSG='Username or Password not correct !'
  16.    END
  17. GO

例2:Procedures(UPDATE_tblRule)

  1. CREATE PROCEDURE dbo.UPDATE_tblRule 
  2. (
  3.     @username nvarchar(20),
  4.     @password nvarchar(100),
  5.     @newpsw nvarchar(100),
  6.     @RMSG nvarchar(100) OUTPUT
  7. )
  8. AS
  9.    DECLARE @FLAG int
  10.    BEGIN
  11.        IF EXISTS(SELECT password FROM tblRule WHERE username=@username)
  12.            SET @FLAG=0
  13.       ELSE
  14.            SELECT @FLAG=-1, @RMSG='Username not correct !'
  15.       IF @FLAG=0
  16.          BEGIN
  17.              IF EXISTS(SELECT password FROM tblRule WHERE username=@username AND password=@password)
  18.                  SET @FLAG=1
  19.              ELSE
  20.                  SET @RMSG='Old Password not corrent!'
  21.          END
  22.       IF @FLAG=1
  23.            BEGIN
  24.                UPDATE tblRule SET password=@newpsw WHERE username=@username
  25.                SET @RMSG='Password Change success!'
  26.            END 
  27.    END
  28. GO

2.Call

2.1 Function: (LtrimZero,Date2String)

  1. SELECT dbo.LtrimZero(Field),dbo. Date2String(Field) FROM TABLE

2.2 Procedures:(Check_Rule)

  1. declare @P1 nvarchar(100) 
  2. exec Check_Rule @username = N'user', @password = N'psw', @RMSG = @P1 output
  3. select @P1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值