如何在SQL Server 2005中插入没有可写列的表?

时间:2011-09-15 10:57:54

标签: sql sql-server sql-server-2005

具体来说,我有一个具有以下签名的功能:

CREATE FUNCTION [dbo].[GetLevelData]()
RETURNS @level TABLE (
    [Level]                 INT PRIMARY KEY IDENTITY,
    [Source Column Name]    AS '{Option Level ' + CAST([Level] AS VARCHAR(10)) + '}',
    [Parent Column Name]    AS '[Parent_L' + CAST([Level] AS VARCHAR(10)) + '_Option]'
)

如何在不修改表格定义的情况下插入行

1 个答案:

答案 0 :(得分:3)

在函数定义的主体内,使用

INSERT @level DEFAULT VALUES;

在要返回的表中创建一个新行。

要一次执行多行,您可以执行以下操作:

CREATE FUNCTION [dbo].[GetLevelData]()
RETURNS @level TABLE (
    [Level]                 INT PRIMARY KEY IDENTITY,
    [Source Column Name]    AS '{Option Level ' + CAST([Level] AS VARCHAR(10)) + '}',
    [Parent Column Name]    AS '[Parent_L' + CAST([Level] AS VARCHAR(10)) + '_Option]'
)
AS
BEGIN
    WHILE ISNULL(SCOPE_IDENTITY(), 0) < 5    -- to end up with 5 rows
        INSERT @level DEFAULT VALUES

    RETURN
END

这有点鬼鬼祟祟但确实有效