postgres 中存储过程的参数有命名约定吗?我想将参数与列名称区分开,以便于阅读,因此 Student_id (column) = s_id(parameter)、period (column) = per (参数名称)、tasking (column) = asgmt (parameter) 等..
CREATE PROCEDURE
insert_assignment(s_id INT, per INT, cl VARCHAR(50), ln VARCHAR(50), sp_id INT, asgmt VARCHAR(500))
LANGUAGE SQL
AS $$
INSERT INTO
assignment(sped_id, assignment)
VALUES
(sp_id, asgmt);
UPDATE assignment ss
SET student_schedule_id=
(SELECT
ss.student_schedule_id
FROM
student_schedule ss
LEFT JOIN
class_teacher ct on ct.class_teacher_id=ss.class_teacher_id
LEFT JOIN
teacher t on t.teacher_id=ct.teacher_id
LEFT JOIN
class c on c.class_id=ct.class_id
WHERE
ss.student_id=s_id AND ss.period=per
)
WHERE assignment=asgmt
$$
最佳答案
没有什么既定的惯例,但我看到了两个共同的主题。但首先不要截断参数名称,这实际上会使阅读和理解它们变得更加困难;还要对齐它们,而不仅仅是将它们串起来。最常见的是将参数设置为 p_ 。另一种是使用 _in 或 _ot 为参数添加后缀
示例:
CREATE PROCEDURE
insert_assignment(p_student_id INT, p_period INT, p_cl VARCHAR(50), p_ln VARCHAR(50), p_sped_id INT, p_assignment VARCHAR(500))
LANGUAGE SQL ...
or
CREATE PROCEDURE
insert_assignment(student_id_in INT,
period_in INT,
cl_in VARCHAR(50),
ln_in VARCHAR(50),
sped_id_in INT,
assignment_in VARCHAR(500)
)
LANGUAGE SQL ...
不确定 cl,ln,因为您没有使用它们。至于 sepd,如果它在您的组织中常用,那就没问题,否则(恕我直言)它是一个糟糕的名字。理解你的主要目标,而不是减少打字。 (这是一个非常糟糕的打字员写的)
关于postgresql - postgresql 中存储过程参数的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62582963/