- 論壇徽章:
- 0
|
例如sqlserver原碼如下:
CREATE PROCEDURE proQueryAD
(
@UserID INT
)
WITH ENCRYPTION
AS
BEGIN
DECLARE @ver int , @ADID int
select @ver=0
SELECT @ver=A.Ver,@ADID=A.ID from CfgAD A,CfgArea B,CfgUser C
where C.ID=@UserID and C.AreaID=B.ID and A.AreaID=B.ID
if exists (select * from ADInfo where ADID=@ADID)
begin
select @ver as 'Ver' ,Url, LinkUrl from ADInfo where ADID=@ADID
end
else
begin
SELECT @Ver as 'Ver' ,'' as 'Url' ,'' as 'LinkUrl'
end
END
GO
GRANT EXECUTE ON proQueryAD TO PUBLIC
我轉換的PG如下:
CREATE OR REPLACE FUNCTION proQueryAD(U_UserID INTEGER) RETURNS SETOF RECORD AS
$$
DECLARE
v_Ver INTEGER;
v_ADID INTEGER;
v_rec RECORD;
BEGIN
v_Ver := 0;
v_ADID := 0;
FOR v_rec IN SELECT A.Ver, A.ID from CfgAD A,CfgArea B,CfgUser C
where C.ID=U_UserID and C.AreaID=B.ID and A.AreaID=B.ID LOOP
v_Ver=v_rec.Ver;
v_ADID=v_rec.ID;
RETURN NEXT v_rec;
END LOOP;
BEGIN
IF EXISTS(select * from ADInfo where ADID=v_ADID) THEN
BEGIN
select v_Ver as Ver ,Url, LinkUrl from ADInfo where ADID=V_ADID;
END;
ELSE
BEGIN
SELECT v_Ver as Ve ,'' as Url ,'' as LinkUrl;
END;
END IF;
END;
RETURN;
END;
$$
LANGUAGE PLPGSQL;
這個里面我想返回的是三個字段或三個空,怎么寫返回值及查詢語句?我那個返回值我只是臨時測試用的! |
|