oracle 用call函数执行存储过程,输出变量怎么写

图片说明

create or replace procedure p_imp_item(v_table_name in varchar2, operator_id in varchar2, v_result out varchar2 ) is
V_SQL long;
v_seq_num varchar2(20);
--v_code varchar2(20);
begin
begin
select concat(to_char(sysdate, 'yyyymmddhh24miss'),
lpad(SEQ_PROC_EXECUTE.NEXTVAL, 6, '0'))
into v_seq_num
from dual;

p_proc(v_seq_num, 'PROC_QC_TABLEDATA_STAT', 'begin', '');

--数据项上传
V_SQL := 'insert into data_items_t
(id, item_name, item_describe, item_ruler, item_type, item_range,
is_multiple_values, is_required, default_value, record_method,
remark, create_operator, create_date)
select id, item_name, item_describe, item_ruler,
decode(item_type, ''字符'', 1, ''数字'' ,2, ''日期'', 3, '''') item_type,
item_range, decode(is_multiple_values, ''Y'', 1, 0) is_multiple_values,
decode(is_required, ''Y'', 1, 0) is_required, default_value,
decode(record_method, ''自动'', 1, ''手动'' , 2, '''') record_method,
remark, '''|| operator_id ||''' , sysdate
from '|| v_table_name ||'';
execute immediate V_SQL;
commit;
p_proc(v_seq_num, 'p_imp_item', 'end', '');
end;
v_result := 1;
exception
when OTHERS then
rollback;
p_proc(v_seq_num, 'p_imp_item', 'error', dbms_utility.format_error_backtrace||':'||sqlerrm);

end p_imp_item;

2个回答

select p_proc(v_seq_num, 'p_imp_item', 'error', dbms_utility.format_error_backtrace||':'||sqlerrm) from dual;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Oracle中执行存储过程call和exec区别
在sqlplus中这两种方法都可以使用:  exec pro_name(参数1..); call pro_name(参数1..);  区别:  1. 但是exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制.  2. 存储过程没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上().   Sql代码  SQL> --创建过程
怎么执行Oracle的存储过程
执行:rn stat = con.prepareCall("call mypackage.getarray(?,?)");rn stat.registerOutParameter(1, java.sql.Types.VARCHAR);rn stat.registerOutParameter(2, java.sql.Types.NUMERIC);rn stat.execute();rnrn报错:调用 'GETARRAY' 时参数个数或类型错误rn
Oracle 存储过程怎么执行
写了这么一个存储过程:rncreate or replace procedure simpleprocedure(v_id in number, v_name out varchar) isrnbeginrn select name into v_name from student where id=v_id;rn rnend simpleprocedure;rnrn调用:rndeclarernv_id number:=5;rnv_name varchar2(100);rnbeginrnv_name:=simpleprocedure(v_id,v_name);rndbms_output.put_line(v_name);rnend;rnrn报错:PLS-00222:在此范围中不存在名为'SIMPLEPROCEDURE'的函数rn PL/SQL:sTATEMENT IGNOREDrn请问错在哪里啊rn
oracle 存储过程怎么写???
create or replace procedure cms_content_creation_Prornasrnbeginrn select * from cms_sys_role t;rnend cms_content_creation_Pro;rnrn上面是我写的查询返回一张表的信息,创建之后rn打开这个存储过程提示::PLS-00428:在此selec语句中缺少INTO子句rn然后是怎么执行这个存储过程,用exec 或者call 都不行???
***oracle的存储过程怎么写?****
过程名称为:testrn过程有三个参数:一个sql语句的字符串,两个整型数rn在过程体中将第一个参数作为sql语句执行。rn怎么做?
写一执行存储过程的函数
因为程序中要频繁执行存储过程,想写一通用方法。我写了一个,不过老是报错“过程需要参数,但参数值没有传进去”.rnpublic DataTable selectDB(string strSql,int num,string[] par)rn rn string strConn = @"server=.;database=Dbtxt;Integrated Security=true";rn SqlConnection conn = new SqlConnection(strConn);rn SqlCommand cmd = conn.CreateCommand();rn cmd.CommandType = CommandType.StoredProcedure;rn cmd.CommandText = strSql;rn for (num = 0; num < par.Length; num++)rn rn cmd.Parameters.AddWithValue("?",par[num]);rn rn this.sda = new SqlDataAdapter(strSql,creatConn());rn this.ds.Clear();rn sda.Fill(ds);rn return ds.Tables[0];rn rn
oracle 的存储过程怎么用?
刚学oracle,在sqlserver的存储过程可以直接返回结果集,听说oracle要用游标,那么返回一行记录怎么写啊?rncreate or replace procedure repair_meter_info(In_unit_num in ws_meter_info.unit_num%type) isrnbeginrn select * from ws_meter_info,ws_planinforn where ws_meter_info.unit_num=In_unit_numrn and ws_meter_info.enter_status='1'rn and ws_meter_info.plan_code=ws_planinfo.plan_code;rnend repair_meter_info;
ORACLE中怎么执行存储过程
create or replace procedure GETUSERS1(pi_UNAME in VARCHAR2,rn pi_UPWD1 in VARCHAR2,rn cur_usres out sys_refcursor ) ISrnBEGINrnopen cur_usres forrn SELECT *rn FROM USERSrn WHERE UNAME = pi_UNAMErn AND UPWD = pi_UPWD1;rnEND GETUSERS1;rnORACLE怎么执行这个存储过程
oracle 中带参数的存储过程要怎么写呀?怎么执行?
这个参数用于指定一个表名,也就是说存储过程内部根据传入的参数查询指定的表。rnrn不知道如何写。rnrn下面的代码是我用来表达意思的,无法执行。希望大家帮我看看,正确的应该怎么写呀?rncreate procedure Myproc1(tablename in varchar2)rnbeginrnselect * from tablenamernendrnrn执行又该怎么样呢?
存储过程的输入变量和输出变量.
在存储过程中,怎样才能实现即有输入又有输出变量,在VB中的ADODB中应如何实现?
Oracle的存储过程怎么写呀?
我想写一个功能如下的存储过程用来查询:rnselect * fromrn(rnselect rownum no,snum,sname,Total from rn(rnSELECT snum,sname,sum(grade) Total FROM VIEW_DATA_SCORE natural join base_data_studentrnwhere semester+(schoolyear-1)*2 >=@@1 and semester+(schoolyear-1)*2 <=@@2 rnand course_kind='1' and mytonumber(grade) >=0 rngroup by snum,snamernhaving snum like @@3rnrn)order by Totalrn)rnwhere no>=@@4 and no < @@5rn其中的@@1--@@5分别是我要传入的五个参数,类型分别是number,number,varchar2(20),number,numberrn应该怎么做呢?rn还有,如果写好用JDBC怎么调用?我不想用CallabelStatment
oracle 更新的存储过程怎么写
update zips set rnpref = TO_MULTI_BYTE(SYS.UTL_I18N.TRANSLITERATE(pref,'hwkatakana_fwkatakana')),rncity = TO_MULTI_BYTE(SYS.UTL_I18N.TRANSLITERATE(city,'hwkatakana_fwkatakana')),rnaddr = TO_MULTI_BYTE(SYS.UTL_I18N.TRANSLITERATE(addr,'hwkatakana_fwkatakana'))rnrnTO_MULTI_BYTErn这个方法是半角变全角rn表没有KEY
在Oracle这样的存储过程怎么写?
insert into rooms(RoomRkey,roomlevel,total,roomprice,mansionrkey)rnvalues('101','二等房','6','800','001')rnrnselect * from rooms where roomrkey = '101'rnrndelete rooms where roomrkey = '101'rnrnupdate rooms set roomlevel = '一等房',roomprice = '1200' where roomrkey = '101'rn本人对Oracel的刚入门,请高手赐教rn分别把上面4个SQL语句改为4个带参数的存储过程.rn
怎么写分页的存储过程?oracle的
我是在c#调用的
这个存储过程怎么写?(oracle)
这个存储过程怎么写?(oracle)刚接触oracle哈rnrntable Arnid numrn01 1rn02 2rn03 3rnrnrn需更新A表,得到如下结果(也就是说02=01+02 计算完成后 03=02+03)rnrnid numrn01 1rn02 3rn03 6rnrnrn
存储过程里边的变量怎么用?
select max(周) from 会议安排rn我想取出这个列的最大值给nrn然后:rnselect * from 会议安排 where 周=n order by 星期,时间rnrnrn具体的语句在存储过程里边怎么写?rnrn
函数冒充执行之-apply()和call()
让一个函数冒充另外一个函数,去执行另外一个函数内部的方法: 方法一:apply() function box(num1,num2){ return num1 + num2; } alert(box(10,10)); //20 // 冒充函数执行 apply() function sum(num1,num2){ return box.apply(th
用VS怎么写存储过程 怎么写
请写出一个很简单的存储过程
怎么写触发器和存储过程/函数??????
[code=SQL]rn怎么写触发器和存储过程/函数??????rn有两个表,一个存储位置参数表:rnCREATE TABLE T_PUB_CCWZCSrn (rn N_GH tinyint PRIMARY KEY,//柜号rn N_CS tinyint,//层数rn N_HS tinyint,//盒数rn N_PS tinyint,//容量rn )rnrn存储位置表:rnCREATE TABLE T_GPGL_CCWZrn (rn ID int IDENTITY (1, 1) NOT NULL,rn N_GH tinyint, //柜号rn N_CH tinyint, //层号rn N_HH tinyint, //盒号rn N_YS tinyint, //余数 (默认值是盒子子的容量)rn )rnrnCREATE TRIGGER MyfirstTrigger ON _PUB_CCWZCSrnAFTER INSERTrnASrn .........rn怎么创建一个触发器(或都别的方法也行),做到如下功能:rn当:rninsert into T_PUB_CCWZCS //存储位置参数表rnvalues(1,3,2,120);rn之后马上:rninsert into T_PUB_CCWZ //存储位置表rnvalues(1,1,1,120);rninsert into T_PUB_CCWZrnvalues(1,1,2,120);rninsert into T_PUB_CCWZrnvalues(1,2,1,120);rninsert into T_PUB_CCWZrnvalues(1,2,2,120);rninsert into T_PUB_CCWZrnvalues(1,3,1,120);rninsert into T_PUB_CCWZrnvalues(1,3,2,120);rnrn每当在into T_PUB_CCWZCS表中增加一条记录都会在存储位置表中增加该柜子的所有存储位置记录。rn怎么写触发器和存储过程/函数??????rn[/code]
这样的存储过程/函数怎么写?
查询数据库中一张表的记录数,然后返回一个值,在Delphi中怎么接受这个返回值?
新手请教:用oracle写带参数的存储过程该怎么写???
-
用 ADOQuery 来执行Oracle的存储过程,怎么得到该存储过程的输出参数?
各位,我不想用TADOStoredProc控件,希望可以用ADOQuery执行带有输出参数的Oracle存储过程.rn也查看了相关的帖子,可是按照帖子上面的做法,总是出问题,比如说:rnrn Oracle的过程名字为Proc_Test,输入参数为param1 Varchar2(20),输出参数为param2 Varchar2(20)。rn rn rn 我是这样调用的,rn with qrySetInResult dorn beginrn Close;rn SQL.Text := 'EXEC Proc_Test param1,:param2 output';rn rn ExecSQL;//用Open也试过了rn showmessage(Trim(Parameters.ParamByName('param2').Value));rn end; rn rn 调试的时候,总是提示:‘不正常的定义参数对象.提供了不一致或是不完整的信息.’.rn 我的感觉,通过TADOStoredProc用'EXEC Proc_Test param1,:param2 output'这种方式调用带输出参数的过程,好像当数据库是SQLSERVER时可以,但是并不适合Oracle.rnrn 希望各位高手能够给予指点。再说明一下:不使用TADOStoredProc控件,用ADOQuery执行带有输出参数的Oracle存储过程,先谢过了大家了。rnrnrn
请教存储过程,怎么批量执行定义的变量
rn如 exec periodend '' 一个变量rnrn变量是一个表中的某个字段 如 rnrnRT123rnRT124rnRW123rnRQ123rn```````` 等 rnrn请问SQL语句该怎么写rnrn
这一句怎么写:(Call totalviewprint or call workviewprint)?
在一个FORM中,如果按下了打印就会跳出一个窗口rn然后选择是库存打印还是工作情况查看打印!rn我现在跳出的窗口已设置好,rn代码如下:rnPrivate Sub cmdtotalview_Click()rn Unload Mern End SubrnrnPrivate Sub cmdworkview_Click()rn Unload Mern End SubrnrnPrivate Sub Form_Load()rn Me.Left = (Screen.Width - Me.Width) / 2rn Me.Top = (Screen.Height - Me.Height) / 2rnEnd Subrn就是我如何判断我按下的是哪个按钮?!也就是说我要实行的是哪种打印??rn在FORM中跳出窗口的代码如下:rnPublic Sub mnufileprint_Click()rn Formchoose.Show 1rn 这一句怎么写:(Call totalviewprint or call workviewprint)?rn rnEnd Sub
执行存储过程后,怎么得到输出
给我的接口上是两个输入:Id,Name; 三个输出:Addr,Phone,Titlern我是这样写的rn ADOStoredProc1->ProcedureName = "sp_aaa";rn ADOStoredProc1->Parameters->Clear();rn ADOStoredProc1->Parameters->CreateParameter("@Id",ftString,pdInput,10,NULL);rn ADOStoredProc1->Parameters->CreateParameter("@Name",ftString,pdInput,5,NULL);rn ADOStoredProc1->Parameters->ParamByName("@Id")->Value =strDistrictID.c_str();rn ADOStoredProc1->Parameters->ParamByName("@Name")->Value =strSiteID.c_str();rn tryrn rn ADOStoredProc1->Open(); rn ADOStoredProc1->ExecProc();rn rn catch(...)rn rn return 1; rn rnrn我要得到 Addr,Phone,Titlern该加些什么? 请各位高人相助 :)
用oracle 写一个函数
写一个函数,要求返回当天工作日期几天后的工作日期,举例:假如今天是星期一,3天后的工作日期是星期四的工作日期。假如今天是星期五,rnrn那么3天后的工作日期是星期三的工作日期。把星期六和星期天去掉了。假如今天是星期六,3天后的工作日期就是星期三的工作日期。
用存储过程怎么写分页
用存储过程怎么写分页.有简单一点的吗
这个用存储过程怎么写
同一个表中rn rn sblx表rn sbmc id parentrn 机械 10 20rn 工程机械 11 10rn 化工机械 12 10rnrn想得到rn spmcz sbmcrn 机械 工程机械rn 机械 化工机械rn这个用存储过程怎么写
这个用存储过程怎么写?
一个字符串,形式是这个样子的 sTemp="001,006,003,004,007,005,..."(中间的逗号可以是其他形式),我有一个表productTable,现在我要根据sTemp中的001,006,003...来查询productTable中的两个字段column1,column2,并把结果累加放到字符串output1,output2中,而且字符串output1、output2的顺序要跟sTemp的一致,用存储过程怎么实现?rnrn上述代码在web中实现如下:rn(在web中sTemp是个数组)rnoutput1="",output2="";rnfor(int i=0;i
这个用存储过程怎么写????
表A,字段如下: rn ServiceTag email rnrn 3HTHY1X wjeo@ooi.com rn GPXHY1X ghf@on.com rn 18THY1X ini@jo.com rnrn rn表b,字段如下: rn ServiceTag email1 rnrn 2HTHY1X,3HTHY1X nullrn GPXHY1X,HPXHY1X,JPXHY1X nullrn G7THY1X,H7THY1X,J7THY1X,18THY1X,28THY1X null rnrnrn要得到如下结果: rnb表 rn ServiceTag email1 rn 2HTHY1X,3HTHY1X wjeo@ooi.com rn GPXHY1X,HPXHY1X,JPXHY1X ghf@on.com rnG7THY1X,H7THY1X,J7THY1X,18THY1X,28THY1X ini@jo.com rnrn因为我这里有上百万条的数据,所以想用存储过程!
问下, odbc oracle ,存储过程怎么执行???调什么函数~~~~~~~~
比如, 简单 select语句执行rnrn 用SQLExecDirect函数可以直接调用执行了rnrn SQLBindCol(V_OD_hstmt,1,SQL_C_SSHORT,&V_OD_id,150,&V_OD_err);rn SQLBindCol(V_OD_hstmt,2,SQL_C_CHAR, &V_OD_buffer,150,&V_OD_err);rnrn // execute sql rn V_OD_erg=SQLExecDirect(V_OD_hstmt,"select * from test",SQL_NTS); rnrn执行存储过程,调什么函数, rnSQLExecDirect(V_OD_hstmt,"exec prtest",SQL_NTS); rn貌似调SQLExecDirect函数直接给挂啦~~~~~~~~~~~~~~~~~~~~rnrn能举个例子么?????????大哥小弟~~~~~~~~~~~~~~
存储过程里面写变量!!
我想建这么一个存储过程。语法是这样的! rnCREATE PROCEDURE [dbo].[sp_insert_user] rn rn@k int , rn@name char(20) rnAS rn--类型转换 rnBegin rninsert user_@k_info (name) values (@name) rn rnEnd rnGO rn我想要K的值是外面传来的参数! rn上面写不对,如何写!
ORACLE 存储过程INTO 多个变量
select f1,f2,f3 into v1,v2,v3 from tab1
oracle变量,游标,存储过程
1.引用型变量 declare v_name personinfo.personinfo_name%type; v_code personinfo.personinfo_code%type; begin select personinfo_name, personinfo_code into v_name, v_code from personinfo whe...
怎么用图形函数输出π
怎么用图形函数输出π(圆周率) asc2码227
Oracle执行存储过程问题
刚接触Oracle,初学者遇到以下问题,请求帮助,谢谢了!rnrn在PL/SQL中执行以下存储过程rnrnDECLARE rnTYPE BRANCH_CURSOR IS REF CURSOR;rnPBRANCH BRANCH_CURSOR;rnBEGINrnPKG_BRANCH.BRANCH_LOADBYKEY(PBRANCH,'DL');rnEND; rnrn按执行按钮只显示“Done in 0.015 Seconds”,但是结果不显示出来,我想查看结果该如何执行啊?
oracle 存储过程执行问题
现有一个存储过程是通过rn计算得出结果的,当单个执行需要十多秒,rn对好几个人同时执行时需要一分钟左右,他们不是同时执行吗?
oracle如何执行存储过程
存储过程如下:Create procedure gokul_proc( pId in number, pName in varchar2, OutCur OUT G_PKG_REFCUR.rcDataCursor ) is BEGIN Open OutCur For select * from gokul_table ob where
Oracle 动态执行存储过程
Oracle 动态执行存储过程
oracle 存储过程执行权限
-
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池