1

我已经创建了插入新记录的过程

CREATE OR REPLACE PROCEDURE PUBLIC."saveStudent"(
    "fName_val" character varying,
    "sName_val" character varying,
    patr_val character varying,
    "DoB_val" DATE,
    GROUP_ID INTEGER,
    instructor_id INTEGER)
LANGUAGE 'plpgsql'

AS $BODY$ BEGIN
 INSERT INTO PUBLIC.student(
    "fName", "sName", "patronymic", "DoB", "group", instructor)
    VALUES (fName_val, sName_val, patr_val, DoB_val, GROUP_ID,instructor_id);
END; $BODY$

但是当我尝试调用它时,我得到了错误

CALL public.saveStudent(
    'It', 
    'is', 
    'Test', 
    '23/09/1999', 
    0, 
    1
)

程序 savestudent(unknown, unknown, unknown, unknown, integer, integer) 不存在

是什么原因造成的?

4

1 回答 1

2

尝试调用这样的过程:

CALL "saveStudent" (
    'It'::character varying, 
    'is'::character varying, 
    'Test'::character varying, 
    '2019-09-23'::date, 
    0, 
    1
);

通过对所有标识符使用双引号,您只会让您的生活更加艰难。这意味着在引用它们时需要使用双引号,因为双引号会强制字符串的特定大小写。这很麻烦并且容易出错(你在这里看到)。另外,如果您编写大量代码,它会耗尽您的双引号键。

是一个 db<>fiddle。请注意,这仍然会产生错误,但会从正在执行的过程中产生错误。

于 2019-11-23T16:49:17.887 回答