VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

调用存储过程

在调用存储过程时,也是基于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();   //执行并返回结果
......  //结果处理