postgresql 中存储过程中参数的命名约定

Naming convention for parameters in stored procedures in postgresql

postgres 中存储过程的参数是否有命名约定?我想将我的参数与我的列名区分开来,以便于阅读,所以 student_id(列)= s_id(参数),period(列)= per(参数名),assignment(列) ) = asgmt (参数), ect..

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
$$  

没有什么既定的约定,但我看到了 2 个共同的主题。但是首先不要截断参数名称,这实际上会使阅读和理解它们变得更加困难;还要对齐它们,而不仅仅是将它们串起来。最常见的是将参数设置为 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,如果它在您的组织中被普遍使用,那很好,否则(恕我直言)这是一个糟糕的名字。理解你的主要目标,而不是减少打字。 (这来自一个非常糟糕的打字员)