Ploggsql问题传递ROWTYPE函数 [英] Plpgsql problem passing ROWTYPE to function

查看:119
本文介绍了Ploggsql问题传递ROWTYPE函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




想到也许除了我以外的其他一些眼睛可以判断我在做什么

这里有什么问题或是否有错误某处。我从来没有

通过一个ROWTYPE可变功能,但我没看到

问题在哪里。


我一直得到错误(第一个是我的调试输出):

注意:上一个循环是:11

警告:执行PL / pgSQL函数时出错

rebuild_cyclestats

警告:分配时的第69行

错误:属性last_cycle找不到


(行号已关闭,因为我已经剪掉了代码发布到这里。)


$ psql --version

psql(PostgreSQL)7.3.4

$ rpm -q postgresql

postgresql-7.3.4-3.rhl9

$ cat / etc / redhat-release Red Hat Linux发行版9(Shrike)


(我不知道如何查询服务器的版本号,

我认为它与客户同步。)

--------------------- ----------------------------

CREATE FUNCTION rebuild_cyclestats(cycles.sname%TYPE)

返回INT

LANGUAGE plpgsql

安全定义器

AS''

DECLARE

this_sname ALIAS $ 1;


last_cycle cycles%ROWTYPE;

this_cycle cycles%ROWTYPE;

this_statdate biograph。 statdate%TYPE;


BEGIN


SELECT INTO last_cycle * FROM cycles WHERE sname = this_sname

AND seq = 1;

如果没有找到那么

- 没有周期。什么都不做。

返回0;

结束如果;


- 调试

加注通知''''上一个循环是:%'''',last_cycle.cid;


- 女性的最后一个周期继续她的统计数据。

SELECT INTO this_statdate statdate FROM biograph WHERE sname =

this_sname;

--error is here

PERFORM _makestats(this_sname

,last_cycle

,NULL

,this_statdate);


返回0;

结束;

'';


创建功能_makestats(cycles.sname%TYPE

,周期
,cycles.sname%TYPE

,cycles.tdate%TYPE)

RETURNS INT

LANGUAGE plpgsql

SECURITY DEFINER

AS''...

---------------------- --------------------------------------------

BTW,如果我写的:


CREATE FUNCTION _makestats(cycles.sname%TYPE

,cycle%ROWTYPE

,cycles.sname%TYPE

,cycles.tdate%TYPE)


我总是得到:

错误:解析器:解析错误在或接近%在角色81

谢谢。


Karl< ko*@meme.com>

自由软件:你不要不付钱,你付清。

- Robert A. Heinlein


------------ ---------------(播出结束)---------------------------

提示6:您是否搜索了我们的列表档案?

http ://archives.postgresql.org

Hi,

Thought perhaps some other eyes than mine can tell if I''m doing
something wrong here or if there''s a bug somewhere. I''ve never
passed a ROWTYPE varaible to a function but I don''t see where
the problem is.

I keep getting errors like (the first is my debug output):
NOTICE: last cycle is: 11
WARNING: Error occurred while executing PL/pgSQL function
rebuild_cyclestats
WARNING: line 69 at assignment
ERROR: Attribute "last_cycle" not found

(Line number is off as I''ve snipped out code to post here.)

$ psql --version
psql (PostgreSQL) 7.3.4
$ rpm -q postgresql
postgresql-7.3.4-3.rhl9
$ cat /etc/redhat-release Red Hat Linux release 9 (Shrike)

(I don''t know how to query the server for it''s version number,
I assume it''s in sync with the client.)
-------------------------------------------------
CREATE FUNCTION rebuild_cyclestats(cycles.sname%TYPE)
RETURNS INT
LANGUAGE plpgsql
SECURITY DEFINER
AS ''
DECLARE
this_sname ALIAS for $1;

last_cycle cycles%ROWTYPE;
this_cycle cycles%ROWTYPE;
this_statdate biograph.statdate%TYPE;

BEGIN

SELECT INTO last_cycle * FROM cycles WHERE sname = this_sname
AND seq = 1;
IF NOT FOUND THEN
-- There are no cycles. Do nothing.
RETURN 0;
END IF;

-- debug
raise notice ''''last cycle is: %'''', last_cycle.cid;

-- The female''''s last cycle continues to her statdate.
SELECT INTO this_statdate statdate FROM biograph WHERE sname =
this_sname;
--error is here
PERFORM _makestats(this_sname
, last_cycle
, NULL
, this_statdate);

RETURN 0;
END;
'';

CREATE FUNCTION _makestats(cycles.sname%TYPE
, cycles
, cycles.sname%TYPE
, cycles.tdate%TYPE)
RETURNS INT
LANGUAGE plpgsql
SECURITY DEFINER
AS '' ...
------------------------------------------------------------------
BTW, if I write:

CREATE FUNCTION _makestats(cycles.sname%TYPE
, cycles%ROWTYPE
, cycles.sname%TYPE
, cycles.tdate%TYPE)

I always get:
ERROR: parser: parse error at or near "%" at character 81
Thanks.

Karl <ko*@meme.com>
Free Software: "You don''t pay back, you pay forward."
-- Robert A. Heinlein

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

推荐答案

psql --version

psql (PostgreSQL)7.3.4
psql --version
psql (PostgreSQL) 7.3.4


rpm -q postgresql

postgresql-7.3.4-3.rhl9
rpm -q postgresql
postgresql-7.3.4-3.rhl9


cat / etc / redhat-release Red Hat Linux发行版9(Shrike)


(我不知道如何查询服务器''版本号,

我假设它与客户同步。)

----------------- --------------------------------

CREATE FUNCTION rebuild_cycl estats(cycles.sname%TYPE)

RETURNS INT

LANGUAGE plpgsql

安全定义器

AS''

DECLARE

this_sname ALIAS for
cat /etc/redhat-release Red Hat Linux release 9 (Shrike)

(I don''t know how to query the server for it''s version number,
I assume it''s in sync with the client.)
-------------------------------------------------
CREATE FUNCTION rebuild_cyclestats(cycles.sname%TYPE)
RETURNS INT
LANGUAGE plpgsql
SECURITY DEFINER
AS ''
DECLARE
this_sname ALIAS for


这篇关于Ploggsql问题传递ROWTYPE函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆