扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
create
目前创新互联公司已为上千的企业提供了网站建设、域名、虚拟空间、成都网站托管、企业网站设计、顺德网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
table
p_proc(pid
number(2),pname
varchar2(20),pname_class
varchar2(20));
--用于存储存储过程和参数名的表并插入四条数据,insert
into
p_proc
values(1,'a','v1');insert
into
p_proc
values(2,'b','v2');insert
into
p_proc
values(3,'c','v3');insert
into
p_proc
values(4,'d','v4');
四个存储过程的的状况为:
create
or
replace
procedure
v1(v_para
varchar2)asbegin
dbms_output.put_line(v_para);end;create
or
replace
procedure
v2(v_para
varchar2)asbegin
dbms_output.put_line(v_para);end;create
or
replace
procedure
v3(v_para
varchar2)asbegin
dbms_output.put_line(v_para);end;create
or
replace
procedure
v4(v_para
varchar2)asbegin
dbms_output.put_line(v_para);end;如下调用存储过程的存储为(请忽略一些测试输出):
给你一个 传递参数的例子
SQL CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /
Procedure created.
SQL DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B
PL/SQL procedure successfully completed.
SQL
这个代码是帮你搜到的,自己先理解了再测试一下:
SqlConnection lSQLConn = null;
SqlCommand lSQLCmd = new SqlCommand();
//Declare a DataAdapter and a DataSet
SqlDataAdapter lDA = new SqlDataAdapter();
DataSet lDS = new DataSet();
//...Execution section
// create and open a connection object
lSQLConn = new SqlConnection(connStr);
lSQLConn.Open();
//The CommandType must be StoredProcedure if we are using an ExecuteScalar
lSQLCmd.CommandType = CommandType.StoredProcedure;
lSQLCmd.CommandText = "sp_YourSPName";
lSQLCmd.Parameters.Add(new SqlParameter("@Parm1", aParm1));
lSQLCmd.Parameters.Add(new SqlParameter("@Parm2", aParm2));
lSQLCmd.Parameters.Add(new SqlParameter("@Parm3", aParm3));
lSQLCmd.Parameters.Add(new SqlParameter("@Parm4", aParm4));
lSQLCmd.Connection = lSQLConn;
//Fill the DataAdapter with a SelectCommand
lDA.SelectCommand = lSQLCmd;
lDA.Fill(lDS);
in out类型参数是过程运行开始会把参数值传入过程,运行结束后会把参数值再传出去。
比如说过程test(v_cs in out number);功能为把带入的参数加1;
v_num:=1;
test(v_num);
dbms_output.put_line(v_num);
将输出2;
没有参数视图这一实现的吧。
网上有人用package中定义的变量作为视图的查询参数值(当然不是直接使用package中的参数,而是调用package中返回此变量值的函数),在使用视图之前先调用package中的设置该变量值的方法,这样来曲线实现所谓的“参数视图”。
从代码上来看,你应该是使用的这种方法。那么,你应该在select语句之前,先调用p_view_param中设置值的方法,执行完成之后再执行select。
不过,个人认为直接使用返回结果集的函数会更方便些。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流