函数 SELECT 即 returns 在 SQL SERVER 2012 中的一行
Function SELECT that returns a row in SQL SERVER 2012
我想创建一个函数来从我的 table 中获取最后一条记录,但它不起作用。
我的代码是:
CREATE FUNCTION GetLastReglement (@CT_Num VARCHAR(17))
RETURNS VARCHAR(17)
AS
BEGIN
SELECT TOP (1) *
FROM F_REGLEMENTT
WHERE CT_Num=@CT_Num
ORDER BY CT_Num DESC
RETURN @CT_Num
END
感谢您的帮助
PS: 我是SQL
的新手
您可以尝试下面的一种方法,根据某个唯一的列值获取最后一行。
CREATE FUNCTION GetRowData
(
)
RETURNS TABLE
AS
RETURN (
SELECT TOP 1 * FROM F_REGLEMENTT ORDER BY CT_Num DESC
)
END
尝试返回整行而不是 CT_Num,如下所示:
CREATE FUNCTION dbo.GetLastReglement (@CT_Num VARCHAR(17)
)
RETURNS TABLE as RETURN (
SELECT top (1) *
FROM F_REGLEMENTT
WHERE CT_Num=@CT_Num
ORDER BY CT_Num DESC
)
END
您可能需要使用 return table 如下
CREATE FUNCTION GetLastReglement (@CT_Num varchar(17))
returns @rtTable table
(
--columns in your table F_REGLEMENTT with datatype as below
col1 nvarchar(50)
...
)
as
begin
insert into @rtTable
select top (1) *
from F_REGLEMENTT
where CT_Num=@CT_Num
order by CT_Num desc
return;
end
You could use the MAX function instead of top(1)*
CREATE FUNCTION [dbo].[GetLastReglement] ()
RETURNS TABLE
AS
RETURN
SELECT * FROM [F_REGLEMENT] WHERE CT_NUM =
(SELECT MAX(CT_NUM) FROM [F_REGLEMENT])
我想创建一个函数来从我的 table 中获取最后一条记录,但它不起作用。
我的代码是:
CREATE FUNCTION GetLastReglement (@CT_Num VARCHAR(17))
RETURNS VARCHAR(17)
AS
BEGIN
SELECT TOP (1) *
FROM F_REGLEMENTT
WHERE CT_Num=@CT_Num
ORDER BY CT_Num DESC
RETURN @CT_Num
END
感谢您的帮助
PS: 我是SQL
的新手您可以尝试下面的一种方法,根据某个唯一的列值获取最后一行。
CREATE FUNCTION GetRowData
(
)
RETURNS TABLE
AS
RETURN (
SELECT TOP 1 * FROM F_REGLEMENTT ORDER BY CT_Num DESC
)
END
尝试返回整行而不是 CT_Num,如下所示:
CREATE FUNCTION dbo.GetLastReglement (@CT_Num VARCHAR(17)
)
RETURNS TABLE as RETURN (
SELECT top (1) *
FROM F_REGLEMENTT
WHERE CT_Num=@CT_Num
ORDER BY CT_Num DESC
)
END
您可能需要使用 return table 如下
CREATE FUNCTION GetLastReglement (@CT_Num varchar(17))
returns @rtTable table
(
--columns in your table F_REGLEMENTT with datatype as below
col1 nvarchar(50)
...
)
as
begin
insert into @rtTable
select top (1) *
from F_REGLEMENTT
where CT_Num=@CT_Num
order by CT_Num desc
return;
end
You could use the MAX function instead of top(1)*
CREATE FUNCTION [dbo].[GetLastReglement] ()
RETURNS TABLE
AS
RETURN
SELECT * FROM [F_REGLEMENT] WHERE CT_NUM =
(SELECT MAX(CT_NUM) FROM [F_REGLEMENT])