SQL Server User-defined Function Create and Call 與Stored Procedures 不同
2008-10-20 13:12
489 查看
1.創建方法:
1.1 Function
CREATE FUNCTION [OWNER].[FUNCTION NAME] (PARAMETER LIST)
RETURNS (return_type_spec) AS
BEGIN
(FUNCTION BODY)
END
例1:去除第一位為'0'的Function(LtrimZero)
CREATE FUNCTION dbo.LtrimZero(@d nvarchar(15))
RETURNS nvarchar(15) AS
BEGIN
WHILE (SUBSTRING(@d,1,1) = '0')
BEGIN
SET @d = SUBSTRING(@d, 2, LEN(@d) -1)
END
RETURN @d
END
例2:日期轉換成字符串Function(Date2String)
CREATE FUNCTION dbo.Date2String(@d AS nvarchar(10)) --增加長度8-->10 (20080101-->2008/01/01)
RETURNS nvarchar(10) AS
BEGIN
IF @d='00000000'
SET @d=''
ELSE
SET @d=SUBSTRING(@d,1,4) + '/' + SUBSTRING(@d,5,2) + '/' + SUBSTRING(@d,7,2)
RETURN @d
END
1.2 Procedures
CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS
例1:Procedures(Check_Rule)
CREATE PROCEDURE dbo.Check_Rule
(
@username nvarchar(20),
@password nvarchar(100),
@RMSG nvarchar(100) OUTPUT
)
AS
BEGIN
IF EXISTS(SELECT lsttime FROM tblRule WHERE username=@username AND password=@password)
BEGIN
SET @RMSG=''
UPDATE tblRule SET lsttime=GETDATE() WHERE username=@username
END
ELSE
SET @RMSG='Username or Password not correct !'
END
GO
例2:Procedures(UPDATE_tblRule)
CREATE PROCEDURE dbo.UPDATE_tblRule
(
@username nvarchar(20),
@password nvarchar(100),
@newpsw nvarchar(100),
@RMSG nvarchar(100) OUTPUT
)
AS
DECLARE @FLAG int
BEGIN
IF EXISTS(SELECT password FROM tblRule WHERE username=@username)
SET @FLAG=0
ELSE
SELECT @FLAG=-1, @RMSG='Username not correct !'
IF @FLAG=0
BEGIN
IF EXISTS(SELECT password FROM tblRule WHERE username=@username AND password=@password)
SET @FLAG=1
ELSE
SET @RMSG='Old Password not corrent!'
END
IF @FLAG=1
BEGIN
UPDATE tblRule SET password=@newpsw WHERE username=@username
SET @RMSG='Password Change success!'
END
END
GO
2.Call
2.1 Function: (LtrimZero,Date2String)
SELECT dbo.LtrimZero(Field),dbo. Date2String(Field) FROM TABLE
2.2 Procedures:(Check_Rule)
declare @P1 nvarchar(100)
exec Check_Rule @username = N'user', @password = N'psw', @RMSG = @P1 output
select @P1
1.1 Function
CREATE FUNCTION [OWNER].[FUNCTION NAME] (PARAMETER LIST)
RETURNS (return_type_spec) AS
BEGIN
(FUNCTION BODY)
END
例1:去除第一位為'0'的Function(LtrimZero)
CREATE FUNCTION dbo.LtrimZero(@d nvarchar(15))
RETURNS nvarchar(15) AS
BEGIN
WHILE (SUBSTRING(@d,1,1) = '0')
BEGIN
SET @d = SUBSTRING(@d, 2, LEN(@d) -1)
END
RETURN @d
END
例2:日期轉換成字符串Function(Date2String)
CREATE FUNCTION dbo.Date2String(@d AS nvarchar(10)) --增加長度8-->10 (20080101-->2008/01/01)
RETURNS nvarchar(10) AS
BEGIN
IF @d='00000000'
SET @d=''
ELSE
SET @d=SUBSTRING(@d,1,4) + '/' + SUBSTRING(@d,5,2) + '/' + SUBSTRING(@d,7,2)
RETURN @d
END
1.2 Procedures
CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS
例1:Procedures(Check_Rule)
CREATE PROCEDURE dbo.Check_Rule
(
@username nvarchar(20),
@password nvarchar(100),
@RMSG nvarchar(100) OUTPUT
)
AS
BEGIN
IF EXISTS(SELECT lsttime FROM tblRule WHERE username=@username AND password=@password)
BEGIN
SET @RMSG=''
UPDATE tblRule SET lsttime=GETDATE() WHERE username=@username
END
ELSE
SET @RMSG='Username or Password not correct !'
END
GO
例2:Procedures(UPDATE_tblRule)
CREATE PROCEDURE dbo.UPDATE_tblRule
(
@username nvarchar(20),
@password nvarchar(100),
@newpsw nvarchar(100),
@RMSG nvarchar(100) OUTPUT
)
AS
DECLARE @FLAG int
BEGIN
IF EXISTS(SELECT password FROM tblRule WHERE username=@username)
SET @FLAG=0
ELSE
SELECT @FLAG=-1, @RMSG='Username not correct !'
IF @FLAG=0
BEGIN
IF EXISTS(SELECT password FROM tblRule WHERE username=@username AND password=@password)
SET @FLAG=1
ELSE
SET @RMSG='Old Password not corrent!'
END
IF @FLAG=1
BEGIN
UPDATE tblRule SET password=@newpsw WHERE username=@username
SET @RMSG='Password Change success!'
END
END
GO
2.Call
2.1 Function: (LtrimZero,Date2String)
SELECT dbo.LtrimZero(Field),dbo. Date2String(Field) FROM TABLE
2.2 Procedures:(Check_Rule)
declare @P1 nvarchar(100)
exec Check_Rule @username = N'user', @password = N'psw', @RMSG = @P1 output
select @P1
相关文章推荐
- create sqlserver login user and add it to certain db user (sqlserver authentication)
- Create a SQL Server Database and User for vCenter Server
- Part 15 Scalar user defined functions in sql server
- Transact SQL User-Defined Functions in SQL Server 2005
- Create XML Files Out Of SQL Server With SSIS And FOR XML Syntax
- Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again.
- Create Login/Role/User/Permission in SQL Server
- Do SQL Server User Defined Datatypes (UDT) affect performance?
- T-SQL Tips: How to raise error in user defined function
- Diffrence between Stored Procedure and User Define Function in SQL
- CREATE FUNCTION sqlserver用户定义函数
- CREATE FUNCTION sqlserver用户定义函数
- SQL 2005 Manager Studio关于属性QuotedIdentifierStatus 不可用于 UserDefinedFunction 的错误
- SQL 2005 Manager Studio关于属性QuotedIdentifierStatus 不可用于 UserDefinedFunction 的错误
- Database user and Sqlserver system user
- CREATE FUNCTION sqlserver用户定义函数
- Create country table and insert all the countries script for SQL Server
- HOW TO: Change the Owner of a User-Defined Data Type That Is in Use in SQL Server 2000
- SQL Server Database Login and User
- 是否应该将SAN上的SQL Server中的user database的data文件, log文件和TempDB文件放在不同的LUN上?