存储过程入参
‘壹’ sql server 中 一个要输入参数和输出参数的存储过程。
1、创建存储过程,包含入参、出参,返回入参除以的数据;
create or replace procere test_proc(in_num number, out_num out number)
as
begin
out_num := in_num/2;
end;
‘贰’ 执行存储过程怎么传入参数
在Oracle中定义存储过程的时候有定义传入参数的个数和类型的。
createprocerepro_name(v_para1invarchar2,v_para2invarchar2)
调用的时候:
declare
v_para1varchar2(30):='parameter1';
v_para2varchar2(30):='parameter2';
begin
pro_name(v_para1,v_para2);
end;
/
‘叁’ sql 存储过程 怎么传入参数
执行带参数的存储过程的方法如下:
Exec sp_configure 'allow updates',1 --允许更新系统表。
exec dbo.User_ChangeObjectOwnerBatch 'OldOwner','dbo'
以上是两个例子。
SQL Server中执行带参数的存储过程的方法是:
EXEC 存储过程名字 '参数1','参数2',数值参数
EXEC 是一个关键字。
字符串参数使用单引号括起来,数值参数不需要使用单引号
‘肆’ 存储过程中参和入参的标志分别是
in,out。in|out存储过程具有入参和出参两种参数选择,in表示的是入参,out表示的是出参,衫罩在使用过程的时候,入参必须得有仔握对应的变量传入,出参得或戚闹有对应的变量接收。
‘伍’ Oracle调用存储过程多个入参可以不全部传参么
不行,就算没有对应的参数,也要传一个空值,不然会调用不到方法。
‘陆’ ORACLE中如何为存储过程传递参数
第一种:只读。参数是只读的,不能修改,即调用时传递进来的是常量,或者变量(但变量不能在存储过程中修改正薯)。通常select及DML类型的存储过程传递的是in类型的参数。
第二种:只写。忽略调用语句传递的任何参数,并在函数(过程)内部给这些参数赋值,因此是只写的。(这种情况是在函数或过程内部给参数重新赋值,但重新赋值后的参举御者数是无法被外部调用的(好像游标类型的参数除外))
CREATE OR REPLACE PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;
外部调用:
set serveroutput on;
declare
firstVal number;
secondVal number;
begin
firstVal := 10;
secondVal := 20;
scott.swap(firstVal,secondVal);
dbms_output.put_line('first is ' || firstVal);
dbms_output.put_line('second is ' || secondVal);
end;
无法在外部访问到firstValue与secondValue的值。此时打印出的结果为:
first is
second is
第三种:读或写。这可以完全控制参数,读取传递的参数的值。可以再函数(过程)内部修改参数的值,在退出函数(过程)后,这些参数被赋给在函数内部写入的值,这样就可以返回多个值。(即入口参数写入值后,可以传递到函数(过程)的外部,供外部调用的时候使用)
ps:函数中的返回值为如下几种:
char; varchar2; number; integer; date; boolean; table; record
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 /
Procere 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 procere successfully completed.
‘柒’ cx_oracle调用存储过程,入参为自定义对象
在cx_oracle 中定义一个参数比如 rec_data TBL_MY_OBJECT;
然后给予赋值 比如 rec_data.id =XXX;rec_data .DATA =XXX;
然后调用INIT_MY_TYPE(rec_data );即可。
‘捌’ 怎么在java代码中设置oracle存储过程中的入参和出参
public String insertJCSP(Map parmaters) {
// TODO Auto-generated method stub
String str=null;
Connection conn = null;
CallableStatement csm = null;
conn = (Connection) sqlSession.getSqlSessionFactory().openSession()
.getConnection();
try {
csm = conn
.prepareCall("{Call pr_insert_JcInfo(?,?,?)}"); //调用存储过程
csm.setString(1, (String) parmaters.get("lottId")); //第一个入参数
csm.setString(2, (String) parmaters.get("idata"));//第二个入参数
csm.registerOutParameter(3, java.sql.Types.VARCHAR);//返回参数
csm.execute();
str = csm.getString(3); //取得返回参数