关于postgresSQL的新更新(版本11)。现在支持程序。可以使用CREATE PROCEDURE命令创建过程,并使用CALL命令执行。
onclick:function(){
window.navigate('your_url');
}
现在是否支持“CALL”?
目前我只能通过将String构建为命令然后执行它来使其工作。 e.g。
CREATE PROCEDURE MyInsert(_sno text, _eid text, _sd date)
LANGUAGE SQL
AS $$
INSERT INTO app_for_leave(sno, eid, sd)
VALUES(_sno, _eid, _sd);
$$;
CALL MyInsert('4','5','2013-04-04');
如果有更好的方法来执行“MyInsert”而不构建查询字符串,请告诉我。这很容易被SQL注入,因为它不是一个准备好的语句。
提前致谢!
答案 0 :(得分:2)
使用CALL proc_name()创建常规命令非常适合执行存储过程-确实不需要任何其他操作。几乎没有什么影响SQL注入的:您仍然可以像往常一样通过指定参数占位符(例如@ param1,@ param2)来传递参数。请注意,参数和占位符也与准备好的语句无关-通过非准备好的语句发送参数(因此可以防止SQL注入)是完全有效的
PostgreSQL协议对调用函数或过程没有任何特殊规定。即使当您使用CommandType.StoredProcedure
调用函数时,所做的所有事情都是使Npgsql在幕后构造一个SELECT func_name()
并将其作为常规命令发送。