0

2列のテーブルを返す関数を定義しました。結果のテーブルが次のようになるように、これらの列の名前を変更できますか。

Press name  |  Sum of pages

?

CREATE FUNCTION F_3
(@press nvarchar(255))
RETURNS @table TABLE ( Press nvarchar(255),
                       PagesSum int )
AS
BEGIN
    INSERT @table SELECT @press, SUM(Books.Pages)
    FROM Books, Press
    WHERE Press.Name = @press AND
        Books.Id_Press = Press.Id
    GROUP BY Press.Name

    RETURN
END
GO

SELECT * FROM F_3('BHV')
GO

私はそれを次のようにしようとしました

Press AS 'Press name' nvarchar(255)

しかし、それはうまくいきません。

4

1 に答える 1

1

これはあなたが意味するものですか?

CREATE FUNCTION F_3
(@press nvarchar(255))
RETURNS @table TABLE ( [Press name]  nvarchar(255),
                   [Sum of pages] int )
AS
BEGIN
    INSERT @table SELECT @press, SUM(Books.Pages)
    FROM Books, Press
    WHERE Press.Name = @press AND
        Books.Id_Press = Press.Id
    GROUP BY Press.Name

    RETURN
END
GO

SELECT * FROM F_3('BHV')
GO

関数の RETURNS 行を変更しました。それとは別に、この関数はインライン テーブル値関数ではないため、パフォーマンスが低下します。MSDN がhttp://technet.microsoft.com/en-us/library/ms177499(v=sql.90).aspxで提供している例を見てください。

于 2012-11-28T05:01:48.453 に答える