具体来说,我有一个具有以下签名的函数:
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]'
)
如何在不修改表定义的情况下向其中插入行?
最佳答案
在函数定义体内,使用
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
这有点偷偷摸摸,但确实有效
关于sql - 如何在 SQL Server 2005 中插入没有可写列的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429705/