C#Npgsql,支持程序调用?

时间:2018-06-19 10:06:20

标签: c# npgsql

关于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注入,因为它不是一个准备好的语句。

提前致谢!

1 个答案:

答案 0 :(得分:2)

使用CALL proc_name()创建常规命令非常适合执行存储过程-确实不需要任何其他操作。几乎没有什么影响SQL注入的:您仍然可以像往常一样通过指定参数占位符(例如@ param1,@ param2)来传递参数。请注意,参数和占位符也与准备好的语句无关-通过非准备好的语句发送参数(因此可以防止SQL注入)是完全有效的

PostgreSQL协议对调用函数或过程没有任何特殊规定。即使当您使用CommandType.StoredProcedure调用函数时,所做的所有事情都是使Npgsql在幕后构造一个SELECT func_name()并将其作为常规命令发送。