我在sql函数中定义了一个函数,它输入3个名称(三个varchars)并输出一个名称(一个varchar)'。我唯一想要的是给这个返回值一个名称/列名。
现在我打电话给我的功能:
select concat_names(@first_name, @middle_name,@last_name)
我看到返回的varchar的没有列名。
这是完整的代码:
if object_id('[co1].[concat_names]') is not null
drop function [co1].[concat_names];
go
create function [co1].[concat_names]
(
@first_name varchar(20),
@middle_name varchar(20),
@last_name varchar(20)
)
returns varchar(62)
as
begin
declare @full_name varchar(62)
set @full_name = @first_name;
if(@middle_name is not null)
set @full_name = @full_name + ' ' + @middle_name;
if(@last_name is not null)
set @full_name = @full_name + ' ' + @last_name;
return @full_name;
end
go
当我这样做时:
select concat_names('A', 'B', 'C')
我在结果集中没有列名。 我知道我可以在上面的select query中返回没有列名后重命名列名。
我只想知道,如果有任何方法我可以在从
返回值时命名列答案 0 :(得分:5)
试试这个:
select fullname(@fn, @mn,@ln) AS 'yourName'
您可以创建表值函数来返回带有名称的列,例如:
create function udf_ParseDate (
@date as datetime
) returns @dateinfo table (
id int identity(1,1),
[date] datetime,
[year] int,
[month] smallint,
[day] smallint
)
as
begin
insert into @dateinfo
select @date, YEAR(@date), MONTH(@date), DAY(@date)
return;
end
在您的代码中:
if object_id('[co1].[concat_names]') is not null
drop function [co1].[concat_names];
go
create function [co1].[concat_names]
(
@first_name varchar(20),
@middle_name varchar(20),
@last_name varchar(20)
)
returns returns @info table (
fullName varchar(256)
)
as
begin
declare @full_name varchar(62)
set @full_name = @first_name;
if(@middle_name is not null)
set @full_name = @full_name + ' ' + @middle_name;
if(@last_name is not null)
set @full_name = @full_name + ' ' + @last_name;
insert into @info select @full_name;
return;
end
go
答案 1 :(得分:2)
这样做:
var req = new ActiveXObject("Microsoft.XMLHTTP");
创建这样的函数:
SELECT fullname(@fn, @mn,@ln) AS COLUM_NAME_YOU_WANT
答案 2 :(得分:0)
SQL Server中的标量值函数无法找到您要查找的内容。即使是默认的SQL Server Scalar值函数也会返回 (无列名)
的数据例如
select Checksum('somedata')
输出
(No column name)
---------------------
-1791257452
我不确定为什么你希望列名来自函数,如果你可以使用别名,你得到的好处是什么?
如果你只是想知道它是否可能,那么答案就是“不”。
只有您拥有的选项是使用AS
的别名,例如follwong。
SELECT fullname(@fn, @mn,@ln) AS FullName