VastbaseE100

基于开源技术的HTAP数据库管理系统。性能优异,稳定可靠,提供诸多专属领域特性。

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();   //执行并返回结果
           ......  //结果处理