在Oracle/SQL Service中通过Function返回Table

时间:2023-03-10 02:00:57
在Oracle/SQL Service中通过Function返回Table

本函数用途:返回一个Table

在Oracle中实现,范例:

 --在Types中:
create or replace type objTable as object
(
s_usercode varchar2(),
s_username varchar2()
); CREATE OR REPLACE TYPE tabTemp AS TABLE OF objtable; --在Function中:
--使用Pipeline管道函数和Pipe row()
create or replace function GetCSClient
(
/*
程式代号:GetCSClient
程式名称:
传入参数:
传回值:
备注:
范例:select * from table(GetCSClient('Shadowxiong'));
版本变更:
xx. YYYY/MM/DD VER AUTHOR COMMENTS
01. 2015/08/28 1.00 Anne_Han New Create
*/
P_Usercode varchar2
)
return tabtemp PIPELINED
as
s_usercode varchar2();
s_username varchar2();
v objtable;
begin
for myrow in (select CShortName,CEnglishName from mv_liclientbaseinfo order by CShortName)
loop
v:=objtable(myrow.CShortName, myrow.CEnglishName);
PIPE ROW (v);
end loop; RETURN; end GetCSClient;

在SQL Service中实现,范例:

 --在Function中:
CREATE FUNCTION [dbo].[GetCSClient] (@USER_CODE NVARCHAR())
RETURNS @objTable TABLE (ClientId nvarchar(),CLIENTNAME nvarchar())
AS
BEGIN
INSERT INTO @objTable(ClientId,CLIENTNAME)
SELECT CLIENTID,CLIENTNAME FROM CLIENT WITH(NOLOCK)
ORDER BY CLIENTID RETURN
END --调用Function
SELECT * FROM dbo.GetCSClient('shadowxiong')