读书人

SQL中的函能有默?解决方法

发布时间: 2012-02-28 13:06:34 作者: rapoo

SQL中的函能有默?
SQL中的函能像VB6.0一,可以置默?
比如:函F_GetName有,最后一默,用能只一?即能select dbo.F_GetName( '00001 ')用?

[解决办法]
用户定义函数的参数。CREATE FUNCTION 语句中可以声明一个或多个参数。函数最多可以有 1,024 个参数。函数执行时每个已声明参数的值必须由用户指定,除非该参数的默认值已经定义。 如果函数的参数有默认值,在调用该函数时必须指定 "default "关键字才能获得默认值。这种行为不同于存储过程中有默认值的参数,在存储过程中省略参数也意味着使用默认值。

使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个函数的参数仅用于该函数本身;相同的参数名称可以用在其它函数中。参数只能代替常量;而不能用于代替表名、列名或其它数据库对象的名称。


[解决办法]
USE AdventureWorks;
GO
IF OBJECT_ID (N 'Sales.fn_SalesByStore ', N 'IF ') IS NOT NULL
DROP FUNCTION Sales.fn_SalesByStore;
GO
CREATE FUNCTION Sales.fn_SalesByStore (@storeid int = 676)
RETURNS TABLE
AS
RETURN
(
SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'YTD Total '
FROM Production.Product AS P
JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID
JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID = SD.SalesOrderID
WHERE SH.CustomerID = @storeid
GROUP BY P.ProductID, P.Name
);
GO

SELECT * FROM Sales.fn_SalesByStore (default);

读书人网 >SQL Server

热点推荐