简体   繁体   English

在PostgreSQL中创建函数时出现问题“错误:“ ROWTYPE”处或附近的语法错误”

[英]Issue While creating function in PostgreSQL “ERROR: syntax error at or near ”ROWTYPE“”

Below is a simple procedure in PL/SQL 以下是PL / SQL中的简单过程

PROCEDURE emp_get_rec (emp_rec IN OUT NOCOPY emp_content%ROWTYPE)
  IS
    v_cnt   NUMBER;
  BEGIN
    SELECT COUNT(*)
    INTO v_cnt
    FROM emp_content
    WHERE emp_id = emp_rec.emp_id;
    IF v_cnt = 1
    THEN
      SELECT * INTO emp_rec
      FROM emp_content
      WHERE emp_id = emp_rec.emp_id;
    END IF;
 END emp_get_rec;

Which I am trying to convert in PostgreSQL, 我正在尝试在PostgreSQL中进行转换,

Create or replace function emp_get_rec (emp_rec IN OUT emp_content%ROWTYPE)
AS $BODY$
DECLARE
    v_cnt   NUMBER;
BEGIN

       SELECT COUNT(*)
    INTO v_cnt
    FROM emp_content
    WHERE emp_id = emp_rec.emp_id;
    IF v_cnt = 1
    THEN
      SELECT * INTO emp_rec
      FROM emp_content
      WHERE emp_id = emp_rec.emp_id;
    END IF;
 END;
$BODY$ LANGUAGE 'plpgsql';

I am facing following error: 我面临以下错误:

ERROR: syntax error at or near "ROWTYPE" 错误:“ ROWTYPE”处或附近的语法错误

Documentation says : 文档说

Whenever you create a table, a composite type is also automatically created, with the same name as the table, to represent the table's row type. 每当创建表时,也会自动创建一个与该表同名的复合类型,以表示该表的行类型。

So you are able to use the table name as the type name where syntactically it means a type: 因此,您可以将表名用作类型名,在语法上表示类型:

create or replace function emp_get_rec (emp_rec IN OUT emp_content)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM