【发布时间】:2016-08-10 19:51:09
【问题描述】:
用T-SQL这个函数
CREATE FUNCTION [dbo].[FuncOrder]
(
@param1 int,
@param2 int
)
RETURNS @returntable TABLE
(
c1 int,
c2 int
)
AS
BEGIN
INSERT @returntable
SELECT @param1 as c2, @param2 as c1
RETURN
END
用这个执行
SELECT * FROM [dbo].[FuncOrder](
1,
2)
GO
结果是这样的
c1 c2
1 2
我希望列别名与返回表定义中的名称相匹配。在我看来,选择列的顺序很重要,而不是列别名。有没有人有链接到文件所说的地方。
【问题讨论】:
-
当您使用 select 语句作为插入源时,您无法通过为列分配别名来控制列的顺序。文档中没有任何内容,因为这不是它的工作方式。但是,您的代码存在一些您应该解决的问题。首先,永远不要假设插入语句中的列。您应该明确命名列。此外,您在这里有一个表值函数,因此实际上不需要表变量。只需返回您的选择语句。
-
这是标准的
insert into select from语法,与表值函数无关。例如。示例here 显示列名不匹配被忽略,仅考虑位置。 -
正是我需要的答案(或 cmets)。谢谢。
标签: sql-server tsql user-defined-functions