调用存储过程
在调用存储过程时,也是基于NpgsqlCommand来进行,只不过是要指定过程名以及参数,调用方法与跟SQL中的存储过程调用类似。
假设有存储过程:
CREATE OR REPLACE FUNCTION "public"."userreg" (p_passport varchar, p_nickname varchar, out p_password varchar, out p_userid integer) RETURNS record AS
......
此存储过程名称为“userreg” ,四个参数,类型分别为varchar,varchar,varchar以及integer,其中前两个参数是in参数,后两个参数是out参数。
调用存储过程示例:
NpgsqlConnection conn = new NpgsqlConnection();
conn.ConnectionString = "......"; //连接参数
NpgsqlCommand cmd = new NpgsqlCommand();
/*设置参数*/
cmd.Connection = conn; //设置连接
cmd.CommandType = CommandType.StoredProcedure; //指明为存储过程
cmd.CommandText = "userreg"; //存储过程名称
NpgsqlParameter p1 = new NpgsqlParameter("p_passport", DbType.String, 50); //参数名,参数类型,长度,下同
NpgsqlParameter p2 = new NpgsqlParameter("p_nickname", DbType.String, 50);
NpgsqlParameter p3 = new NpgsqlParameter("p_nickname", DbType.String, 50);
NpgsqlParameter p4 = new NpgsqlParameter("p_userid", DbType.Int32);
p1.Value = ......; //对于in参数,设置参数值
p2.Value = ......;
p3.Direction = ParameterDirection.Output; //对于out参数,指明参数方向
p4.Direction = ParameterDirection.Output;
cmd.Parameters.Add(p1); //给cmd添加参数
cmd.Parameters.Add(p2);
cmd.Parameters.Add(p3);
cmd.Parameters.Add(p4);
conn.Open(); //连接数据库
NpgsqlDataReader dr = cmd.ExecuteReader(); //执行并返回结果
...... //结果处理