大佬们,mysql调用了存储过程,如何获得该存储过程的名字

存储过程里调用了 存储过程,存储过程有可能报错,现在想记录报错的存储过程名,求指点有没有类似 sqlService里 ERROR_procedure()的方法

2个回答

可以通过在调用的每个存储过程中定义异常处理,根据不同存储过程返回不同的值来判断到底是哪一个存储过程运行出错。
这是我自己写的一个异常处理的例子:
/*异常处理 异常定义必须在变量定义之后 */
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS condition 1 @sqlcode = RETURNED_SQLSTATE, @sqlerr = MESSAGE_TEXT;
SET state='0';
SET @b_id=(SELECT b_id FROM T_BATCH WHERE r_state='1');
SET @sp_name='haw_bus_orig_proc';
INSERT INTO sp_error_log(b_id,sp_name,sqlcode,sqlerr)
VALUES(@b_id,@sp_name,@sqlcode,@sqlerr);
END;
我这个例子是如果存储过程运行出错,将返回0,并将本身的存储过程名及出错信息等记录在表中。@b_id可以忽略

weixin_43637245
weixin_43637245 算了,采纳你的吧
6 个月之前 回复
weixin_43637245
weixin_43637245 我也是用的mysql自带的异常处理加错误缓存做的,但是我想着有没有方法在这个里面直接获取当前的存储过程的名字
6 个月之前 回复

记录报错应该使用 MySQL里面的触发器。

weixin_43637245
weixin_43637245 回复: 还请您不啬指教
8 个月之前 回复
weixin_43637245
weixin_43637245 可这前提是有获取异常的方法啊
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何调用了一个存储过程后,让存储过程在后台执行
如何调用了一个oracle存储过程后,让存储过程执行过程在数据库后台运行,前台页面不需要等待存储过程结束后再提交?
存储过程调存储过程,有疑问
CREATE PROCEDURE sp_bbs_article_add --发表帖子rn@accounts nvarchar(20),rn@title nvarchar(200)=null,rn@content ntext=null,rn@fid int,rn@expression int=1,--发帖表情rn@issign int=0,--是否显示签名rn@ip nvarchar(50)=null, --发帖时的IP rnasrnbeginrndeclare @adjust int --调用分类数据调整存储过程返回值rn rn begin tranrnrn --开始添加帖子rn insert into bbs_article(accounts,title,content,fid,pid,expression,issign,ip,pic,suffix,replyaccounts,replytime,istop,status,addtime) values(@accounts,@title,@content,@fid,0,@expression,@issign,@ip,0,'',@accounts,getdate(),0,1,getdate())rn if @@error<>0 goto errhandlern rn set @id=ident_current('bbs_article')rnrn --开始更新用户帖子数量rn update bbs_user set topic=topic+1 where accounts=@accounts rn if @@error<>0 goto errhandlern rn --分类数据调整rn exec @adjust=sp_bbs_fenlei_adjust @fid=fidrn rn if @adjust=0 goto errhandle --分类数据调整失败rn rn commit tranrn return 1rn rnrn--执行版块分类数据操作 rn rnerrhandle:rnif @@error<>0 rn beginrn rollback tranrn return 0rn endrnrnendrnGOrnrnrnCREATE PROCEDURE sp_bbs_fenlei_adjust --调整数据的分类rn@fid int,--当前论坛记录的fidrnas rnbeginrnrn --开始rnrn begin tranrn rn update bbs_fenlei set topic=topic+1 where fid=@fid --当前分类主题帖数+1 rn if @@error<>0 goto errhandlernrn 。。。。。更新其他分类操作rn if @@error<>0 goto errhandlernrnrn commit tranrn return 1 --操作成功rnrnerrhandle:rnif @@error<>0 rn beginrn rollback tranrn return 0 --操作失败rn endrnrnendrnGOrnrn现在的问题是rnrndeclare @id intrnexec sp_bbs_article_add @accounts='admin',@fid=13,@id=@id outputrnrn服务器: 消息 8114,级别 16,状态 1,过程 sp_bbs_fenlei_adjust,行 0rn将数据类型 nvarchar 转换为 int 时出错。rnrn错误出在 if @adjust=0 goto errhandle rnrn我是有返回值的啊rnrnrn第二种情况改为rnif @adjust<>1 goto errhandle 后rnrn错误为rnrn服务器: 消息 8114,级别 16,状态 1,过程 sp_bbs_fenlei_adjust,行 0rn将数据类型 nvarchar 转换为 int 时出错。rn服rn务器: 消息 266,级别 16,状态 2,过程 sp_bbs_article_add,行 65535rnEXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 0,当前计数 = 1。rnrnrn我的目的是,当sp_bbs_fenlei_adjust返回0,也就是调整分类失败时,sp_bbs_article_add里的全部回滚rnrnrn
存储过程调存储过程的事务
直接上代码:   是在包里写的存储过程,要测试的话,要先写声明   声明 procedure test1(p_RETCODE in out varchar2, p_retInfo in out varchar2); procedure test2(p_RETCODE in out varchar2, p_retInfo in out varchar2); procedure t
如何修改存储过程的名字?
请问如何在SQL PLUS中如何修改某个存储过程的名字?rn或是在SQL NAVERGATE中怎么修改rn
如何获得该直线方程?
rn平面上有n个点( n >= 3 ), 求一条直线,使得这n个点到该直线的距离的平方和最小,不能对每个斜率用遍历方法(那样太慢了)。rnrn请教计算几何方面的高手。rnrn(如果给定斜率,算法我倒是知道的)。
为何存储过程执行的过程中调用了系统的存储过程!
我在SQL Server的事件查看器中查看我的存储过程的执行情况,发现我的存储过程执行过程中有一部分时间花费在下面的事件中了,请教大侠这是不是正常的情况。另外,大侠们能否给我提供一些有关索引优化和SQL Server2000性能优化的资料,最好具体一些。谢谢!!!rn email:cnxian_1@etang.comrnrnEventClass TextData DatabaseID SPID Start-rntimernSQL:BatchStarting SELECT N'Testing Connection...' 4 54 2003-08-28 16:21:29.963 rnSQL:StmtStarting SELECT N'Testing Connection...' 4 54 2003-08-28 16:21:29.963 rnSQL:BatchStarting EXECUTE msdb.dbo.sp_sqlagent_get_perf_counters 4 54 2003-08-28 16:21:29.963 rnSQL:StmtStarting EXECUTE msdb.dbo.sp_sqlagent_get_perf_counters 4 54 2003-08-28 16:21:29.963 rnSP:Starting EXECUTE msdb.dbo.sp_sqlagent_get_perf_counters 4 54 2003-08-28 16:21:29.963 rnSQL:StmtStarting -- sp_sqlagent_get_perf_countersrnSET NOCOUNT ONrnrn 4 54 2003-08-28 16:21:29.993 rnSQL:StmtStarting -- sp_sqlagent_get_perf_counters
调用了存储过程,提示Rs关闭?
id=request("id")rncontent=Server.HTMLEncode(request("content"))rnrefertime=Server.HTMLEncode(request("time"))rnDim cmdTest, prmTestrnSet cmdTest = Server.CreateObject("ADODB.Command")rncmdTest.ActiveConnection = ConnrncmdTest.CommandText = "select_reply" '存储过程名rncmdTest.Prepared = True'Prepared 属性决定是否将 SQL 命令先行编译,将其设为True,可以加快运行rncmdTest.CommandType = adCmdStoredProcrnSet prmTest = cmdTest.CreateParameter("ReturnValue",adInteger,adParamReturnValue)rncmdTest.Parameters.Append prmTestrnwith cmdTestrn .Parameters.Append .CreateParameter("@refer_id",3,1,4,id)rnEnd withrnset rs=server.createobject("adodb.recordset")rnSet Rs=cmdTest.Execute() rn我下面写Do while的时候出错了 rn提示 rs已经关闭 rnid是没有错误的,值为23
有个存储过程被存储过程调用了,怎么找到调用存储过程的存储过程
如题目,就是不知道存储过程在哪个存储过程里被调用了。rnrn这题目有点绕,对不起大家
MYSQL 存储过程调用存储过程
P1rnCREATE PROCEDURE P1(IN hid int(8))rnbenginrn..rnendrnrnP2rnCREATE PROCEDURE P2(IN hid int(8))rnbenginrnexec P1(hid);rn..rnendrnrn为什么提示exec P1(hid); 有错呢
【mysql 存储过程】存储过程之流程控制语句
-- 1、IF语句 -- 创建存储过程,判断两个输入参数哪一个大 -- 输入的第一个参数对应p1,第二个对应p2,@ax用来接收输出变量p3; 如果p1>p2,输出1;如果p1=p2,输出2;其他情况,输出3。 -- -- 定义存储过程 DELIMITER $$ CREATE PROCEDURE difference(IN p1 INTEGER,IN p2 INTEGER,OUT p3 INTEG
asp中如何调存储过程
CREATE PROCEDURE zhou_pj ASrn select gh,xm from jb_ry rnGOrnrn我如何在asp中调用zhou_pj的到的数据
我如何获得该属性
我如何或的下面xml的中documentelement的属性id 的值rn我用xmldoc.documentelement.attributes.getnameditem("id").text无法获得该值rn为什么?rn--------------------rn 与家人同住
如何通过某个对象的名字获得该对象
例如我定义了一个DataGridColumn对象dgc,怎么通过"dgc"获得dgc对象?rnDataGridColumn dgc = DataGrid1.Columns[ 0 ];rn......rnrnrnDataGridColumn dgc2 = ??????( "dgc" );
如何调出mysql的存储过程?
RT,mysql如何创建存储过程?已经有表了,如何创建该表的存储过程?就如同SQL SERVER里面有个编写脚本,里面的自动编写创建表的存储过程一样。 求指点!!![img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]
mysql 如何创建存储过程
在处理复杂的数据库关系时,我们通常会写存储过程来完成我们的业务需求。 一:创建存储过程的基本语法 1 无参数的存储过程: create procedure pro_test()  begin .....end 2有参数的存储过程: create procedure pro_test1(IN param1 VARCHAR(64),OUT param2 VARCHAR(64))
MySQL如何建立存储过程
不知道在MySQL建立存储过程的语法是怎么样的rn比如有student表rn----id----name----role----sex----agern---001-----zhu---guest----boy-----20rn---002------li---guest----boy-----23rn---003----zhao---admin---girl-----24rnrn如何建个存储过程rn(我采用InterBase数据库的形式描述)rn存储过程主体为select max(age) from student where role = :输入参数 into :输出参数rnrn谢谢大家了
MYSQL 的存储过程如何注释
MYSQL 的存储过程如何注释 rnsql2000中用--可以注释 语句 不被编译rn但是mysql不知道如何 (用什么)rnrn
MySql如何调用存储过程
刚开始接触mysql的存储过程,定义了一个借书业务的存储过程,接受两个输入参数(IN id int,IN isbn char(30)),没有输出参数,但是存储过程最后返回插入的新数据select * From xxrnrn网上的调用方法都是rn[code=text]call library_borrow(1,1234567)[/code]rn然而我运行后发现传进去的参数变为null,然后查看Navicat的调用语句,发现却是rn[code=text]set @id = 1rnset @isbn =1234567rncall `library_borrow`(@id,@isbn)[/code]rn请问下这种情况为什么不能直接call xx(1,1234567)rnrnrn以下是完整代码rn[code=text]CREATE DEFINER=`root`@`localhost` PROCEDURE `library_borrow`(IN id int, IN isbn char(30))rnbegin rn DECLARE lid int default 0; #新插入的记录idrn DECLARE uname char(30) default'';#用户名rn DECLARE bname char(30) default'';#书名rn DECLARE sdate datetime default now();rn DECLARE edate datetime default date_add(sdate,INTERVAL '1' MONTH); rn rn set @uname = (select user_name from web_user where user_id=@id);rn set @bname = (select book_name from web_book where book_isbn=@isbn);rn set @sdate = now();rn set @edate = date_add(sdate,INTERVAL '1' MONTH);rnrn #把借书记录插入表格 rn insert into web_borrow_record(borrow_user_id,borrow_user_name,borrow_book_isbn,borrow_book_name,rn borrow_start_date,borrow_end_date,borrow_return_status)rn values(@id,@uname,@isbn,@bname,@sdate,@edate,'false');rn rn #获取刚插入数据的idrn set @lid = LAST_INSERT_ID();rn rn #用户借书限额减一rn update web_user rn set user_book_limit = user_book_limit - 1rn where user_id = @id;rn rn #库存减一rn update web_stockrn set stock_book_remain = stock_book_remain - 1rn where stock_book_isbn = @isbn;rn rn #返回结果rn select * from web_borrow_record where borrow_id = @lid; rnend[/code]rn
MySQL的存储过程如何退出
请问如何根据条件选择终止存储过程,类似于return或者break
存储过程调用存储过程,怎么调,我急┄
存储过程调用存储过程,怎么调?rn 比如有存储过程sp_a(vA in,Vb out)rn 在sp_b中如何调用??
blob类型存储过程,调用时存储过程出错?
使用c# 连接oracle数据库,数据库的创建参数采用默认值。自己写的存储过程含有一个* in blob,使用的时候如果大小 <30kb,程序可以正常运行。但当数据 > 30kb ,便会出错,提示 ‘无法转化数据‘。请教各位,急...
JDBC调DB2存储过程
JDBC调DB2存储过程
java调存储过程
存储过程:rncreate or replace procedure insert_emprn (empid in number,rn empname in varchar2,rn empsal in number)rn asrn begin rn insert into emp(empno,ename,sal) values(empid,empname,empsal);rn end insert_emp;rnrnjava代码:rn[code=Java]rnpublic class TestOracle rnrn public static void main(String[] args) rn Connection conn = null;rn CallableStatement cs = null;rn rn String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";rn String name = "system";rn String password = "123456";rn try rn Class.forName("oracle.jdbc.driver.OracleDriver");rn conn = DriverManager.getConnection(url,name,password);rn cs = conn.prepareCall("call insert_emp(?,?,?)");rn cs.setInt(1, 30);rn cs.setString(2, "Lucy");rn cs.setInt(3, 4000);rn cs.execute();rn System.out.println("insert ok");rn catch (Exception e) rn e.printStackTrace();rn finallyrn try rn cs.close();rn catch (SQLException e) rn e.printStackTrace();rn rn try rn conn.close();rn catch (SQLException e) rn e.printStackTrace();rn rn rn rnrn[/code]rnrn错误提示:rnjava.sql.SQLException: ORA-06550: line 1, column 7:rnPLS-00201: identifier 'INSERT_EMP' must be declaredrnORA-06550: line 1, column 7:rnPL/SQL: Statement ignoredrnrn存储过程使用完全ok,为什么java调用就提示这样的错误,小弟刚涉及这方面知识,请大家帮我一下,如何解决,谢谢。rn
存储过程调不出数据。
分页类rn[code=C#]public DataTable Pagination(string sqlStr, int currentpage, int pagesize)rn rn conn = new SqlConnection(lt.Common.Config.connStr);rn comm = new SqlCommand();rn comm.Connection = conn;rn comm.CommandType = CommandType.StoredProcedure;rn comm.CommandText = "lt_Paginationcursor";rn SqlParameter paramOUT = comm.Parameters.AddWithValue("@RETURN_VALUE", "");rn paramOUT.Direction = ParameterDirection.ReturnValue;rn SqlParameter paramOUTPUT = comm.Parameters.Add("@pagecount", SqlDbType.BigInt);rn paramOUTPUT.Direction = ParameterDirection.Output;rn SqlParameter paramOUTPUT1 = comm.Parameters.Add("@recordCount", SqlDbType.BigInt);rn paramOUTPUT1.Direction = ParameterDirection.Output;rn comm.Parameters.AddWithValue("sql", sqlStr);rn comm.Parameters.AddWithValue("currentpage", currentpage);rn comm.Parameters.AddWithValue("pagesize", pagesize);rn SqlDataAdapter da = new SqlDataAdapter(comm);rn DataTable dtable = new DataTable();rn da.Fill(dtable);rn _pageCount = System.Convert.ToInt32(comm.Parameters["@pagecount"].Value.ToString());rn _recordCount = System.Convert.ToInt32(comm.Parameters["@recordcount"].Value.ToString());rn return dtable;rn rn[/code]rnrn存储过程 lt_Paginationcursorrn[code=SQL]rnALTER PROCEDURE dbo.lt_Paginationcursor rn@sql nvarchar(4000), --要执行的sql语句rn@currentpage int=1, --要显示的页码rn@pagesize int=10, --每页的大小rn@pagecount int=0 output, --总页数rn@recordCount int=0 output--总记录数rnasrnset nocount onrndeclare @cursor int --cursor 是游标的idrnexec sp_cursoropen @cursor output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount outputrnselect @recordCount=@pagecountrnselect @pagecount=ceiling(1.0*@pagecount/@pagesize) ,@currentpage=(@currentpage-1)*@pagesize+1rnselect @pagecount,@currentpagernexec sp_cursorfetch @cursor ,16,@currentpage,@pagesize rnexec sp_cursorclose @cursorrnreturnrn[/code]rnrn调用执行rn[code=C#]rnSQLServerDAL.Perform p = new SQLServerDAL.Perform();rn DataTable dt = p.Pagination("select * from lt_mshospital", 1, 10);rn GridView1.DataSource = dt;rn GridView1.DataBind();rn Response.Write(p.pageCount + "/" + p.recordCount + "/");rn Response.Write(dt.Rows.Count);rn[/code]rnrn说明:数据库表中有61条数据,读出来后,无错误。rn但是 总页数(p.pageCount)正确,总数据量(p.recordCount)正确。[color=#FF0000][b]datatable没有数据,rows.count是0[/b][/color]rn为什么噢!~!~急死了。想不明白了。找不到原因了。。。rn求高手帮帮忙吧!~~!rn另外,存储过程我单独执行,是可以正常调出数据的。很正常。rn就是和程序整合起来就读不出来了。。不知道为什么,求高手帮忙额!~
触发器调存储过程的问题
在更新事件触发器中调用递归更新其子记录的存储过程rn存储过程再更新表时没有执行触发器。
PB调存储过程问题?
数据库是SQL 2000:rnDECLARE sp_1 Procedure Sp_jb @yygg = "0001" USING SQLCA;rnEXECUTE sp_1;rnrnMESSAGEBOX("",sqlca.sqlcode)rnrn为何返回的均为-1.rn存储过程是正确的,我在查询分析器中试过.rn为何?
JdbcTemplate调存储过程
使用spring JdbcTemplate均不用手动关闭连接 //JdbcTemplate  执行存储过程,不含事物。 ComboPooledDataSource ds = (ComboPooledDataSource )res.get(&quot;ds&quot;); //连接池获取        JdbcTemplate jt = new JdbcTemplate(ds);         String pa...
PB调存储过程
CREATE OR REPLACE PROCEDURE PRC_TEST_YL(pathpart_id in int,str_sql out string)rnISrnBEGINrn str_sql:='syxh'||to_char(pathpart_id);rnEND PRC_TEST_YL;rn我建立了这样一个存储过程.rn我在PB中这样写:rn...rnDeclare getsql procedure for PRC_TEST_YL :iSubPath_id,:str_sql OUTPUT;rnEXECUTE getsql;rnfetch getsql into :str_sql;rnclose getsql;rnmle_sql.text=str_sql;rn...rn但是得不到值,这是为什么?
存储过程调用后不执行
各位大哥,我编译了一个存储过程,执行了几次后,rn再在DOS环境下直接 call 的时候,后台提示rn输出参数的值rn-------------------------rn参数名: RETURNCODErn参数值: -rnrn返回状态 = 0rnrn然后重新编译一下后又可以执行了!!!rn输出参数的值rn-------------------------rn参数名: RETURNCODErn参数值: 0rnrn返回状态 = 0rnrn有哪为大哥遇到过这个问题吗。帮忙解决下,谢谢!!!
存储过程调 试的问题。
1、我在查询分析器里面,调试存诸过程,怎么设置断点,怎么单步执行?rn2、如果该存储过程有返回值,我怎么得到返回值?rn如:rnCreate Procedure GetMaxIDrn@TableName varchar(100), @ID int outputrnasrnbeginrndeclare @sql nvarchar(1000)rnset @sql='select @ID = max(ID) from '+@TableNamernexec sp_executesql @sql,N'@id int output',@id output ----这里是要取execsql中max(xx)返回的值rnendrnrn--运行该过程rndeclare @id intrnexec GetMaxID,'xf',@idrnselect @id --这样好象看不能结果,我想看到@id的值该怎么写?
java 调存储过程
java方法调存储过程,存储过程的写法以及含参数的输入输出
存储过程再调存储过程!如何写啊?
小弟现在一个存储过程A将执行另外一个存储过程B。rn现我希望B返回一个#temptable,而A来处理#temptable。这个如何写啊?rnrn我查了下用output 只能是一个变量。象这样的表名如何调?
webservice怎么调存储过程
谢谢小妹在线急等。最好把代码附上
ASP调存储过程报错
<%@language=vbscript codepage=936 %>rnrnrnrnrn 查询rn rnrn rn rnrnrnrnrn <%rn dim objrsrn Set objrs = Server.CreateObject("ADODB.Recordset")rn objrs.open "v_Master",conn,0,1,4rnrn if not objrs.eof thenrn objrs.PageSize = 15rn Page = CLng(Request("Page"))rn If Page<1 or page=0 or page="" Then Page=1rn If Page>objrs.PageCount Then Page=objrs.PageCount rn totalrec=objrs.recordcountrn totalpage=objrs.pagecountrn rn objrs.AbsolutePage=Page rn For iPage=1 To objrs.PageSizern RecNo=(Page - 1) * objrs.PageSize + iPage rn rn %>rn rn rn 查询系统rn rn rn rn rn rn 状态rn 序号rn 工单号rn 计划数rn 转入数rn 工序rn 开始时间rn 耗用时间rn GXrn X1rn X2rn X3rn X4rn X5rn X6rn X7rn X8rn 组rn 班rn rn rn <%=objrs("status")%>rn <%=objrs("x_no")%>rn <%=objrs("prod_no")%>rn <%=objrs("mqty")%>rn <%=objrs("qty")%>rn <%=objrs("gx_mode")%>rn <%=objrs("gx_stime")%>rn <%=objrs("gx_etime")%>rn <%=objrs("gx")%>rn <%=objrs("gx1")%>rn <%=objrs("gx2")%>rn <%=objrs("gx3")%>rn <%=objrs("gx4")%>rn <%=objrs("gx5")%>rn <%=objrs("gx6")%>rn <%=objrs("gx7")%>rn <%=objrs("gx8")%>rn <%=objrs("gx_group")%>rn <%=objrs("gx_class")%>rn rn <%rn rn objrs.movenextrn If objrs.EOF Then Exit Forrnrnnext rnend if rn %>rn rn rn rn rnrnrn rn rn rn 共<%=totalpage%>页 第<%=page%>页 rn <%if page-1>0 then%>rn ">第一页 ">rn 上一页rn <%else%>rn 第一页 上一页rn <%end if%>rn <%if page+1<=totalpage then%>rn ">rn 下一页 ">rn 最后一页rn <%else%>rn 下一页 最后一页rn <%end if%>rn 转到">">rn rn rn rn rn rnrnrn<%rnobjrs.closernset objrs=nothingrn'objconn.closern'set objconn=nothingrn%> rnrnrn这里是网页全部代码 老是报rn错误类型:rnADODB.Recordset (0x800A0BB9)rn参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。rn/prc_list.asp, 第 32 行rn
存储过程调webservice的问题
现需要在存储过程中调用webservice,按照网友的方法,做好准备工作之后,运行报错rnORA-29532: Java 调用被未捕获的 Java 异常错误终止: java.lang.VerifyError: (class: oracle/j2ee/ws/saaj/soap/SOAPDoc, method: getDocumentBuilder signature: ()Loracle/xml/parser/v2/DocumentBuilder;) Wrong return type in functionrnrnplsql代码如下rnrndeclarern service_ utl_dbws.SERVICE;rn l_call utl_dbws.call;rn l_result ANYDATA;rn rn l_wsdl_url VARCHAR2(1024);rn l_namespace VARCHAR2(200);rn l_service VARCHAR2(200);rn l_operation_name VARCHAR2(200);rn rn port_qname utl_dbws.QNAME; rn service_qname UTL_DBWS.qname;rn operation_qname utl_dbws.QNAME;rn rn rn l_input_params UTL_DBWS.anydata_list;rn end_result VARCHAR2(50);rn rn string_type_qname UTL_DBWS.QNAME;rn BEGINrn l_wsdl_url := 'http://127.0.0.1:5080/widget/WebService/UserWS?wsdl';rn l_namespace:= 'http://webservice.widget.bsj.com/';rn l_service:='UserWSService';rn l_operation_name := 'getTranslatorUser';rn rn port_qname:=UTL_DBWS.to_qname(l_namespace, 'UserWSPort');rn service_qname := UTL_DBWS.to_qname(l_namespace, l_service);rn operation_qname := UTL_DBWS.to_qname(l_namespace, l_operation_name);rn string_type_qname := UTL_DBWS.to_qname('http://www.w3.org/2001/XMLSchema', 'string');rn rnrn rn --service_ := UTL_DBWS.create_service(wsdl_document_location=>urifactory.getUri(l_wsdl_url),service_name=>service_qname);rn service_ := UTL_DBWS.create_service(wsdl_document_location=>httpuritype(l_wsdl_url),service_name=>service_qname);rn rn dbms_output.put_line('111');rn rn rn l_call := UTL_DBWS.create_call(service_handle=>service_,port_name=>null,operation_name=>operation_qname);rn rn rn utl_dbws.add_parameter(l_call,'portalId',string_type_qname,'ParameterMode.IN');rn utl_dbws.add_parameter(l_call,'sysName',string_type_qname,'ParameterMode.IN');rn utl_dbws.set_return_type(l_call,string_type_qname);rn utl_dbws.set_property(l_call, 'SOAPACTION_USE', 'TRUE');rn utl_dbws.set_property(l_call, 'SOAPACTION_URI', '');rn rn rn l_input_params(0) := ANYDATA.ConvertVarchar2('sysadmin');rn l_input_params(1) := ANYDATA.ConvertVarchar2('PLAN');rn rn dbms_output.put_line(ANYDATA.AccessVarchar2(l_input_params(0)));rn rn [color=#FF0000]l_result := UTL_DBWS.invoke(call_Handle=>l_call,input_Params=>l_input_params);[/color] rn dbms_output.put_line('111');rn rn UTL_DBWS.release_call (call_handle=>l_call);rn UTL_DBWS.release_service (service_handle=>service_);rn end_result:= ANYDATA.AccessVarchar2(l_result);rn dbms_output.put_line(end_result);rn EXCEPTIONrn WHEN OTHERS THENrn --RETURN substr(sqlerrm,0,2000);rn dbms_output.put_line('222');rn dbms_output.put_line(substr(sqlerrm,0,3000));rn END;rnrn执行到红色报错,WSDL如下,谢谢大家了rnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrn
存储过程调有问题?
我在pb程序中调有了oracle的存储过程,可是过一段时间过程便不可用必须要重新编译rn过程才可以使用,在这期间并没有改变数据库中的东西,不知道是什么?rn不过我改变过连接的数据库,会不会是这个对调用产生了影响?
存储过程调用不运行
在sqlserver2000建了一存储过程,SQL SERVER 调用没问题,我用pb调用不了,数据类型没问题,急!
调存储过程的问题
我写了个函数来调用存储过程,函数如下rnPublic Function ExecProc(ByVal ProcName As String, ByVal Para As Variant) As Recordsetrnrn Dim i As Integerrn Dim comNew As Commandrn Dim prmNew As Parameterrn Dim rs As Recordsetrn Dim conNew As Connectionrnrn Set conNew = OpenConnection() '打开连接rnrn If UBound(Para) = 0 Thenrn Set rs = conNew.Execute(ProcName, , adCmdStoredProc)rn Elsern Set comNew = New Commandrnrn '找出存储过程需要什么参数rn With comNewrn .ActiveConnection = conNewrn .CommandText = ProcNamern .CommandType = adCmdStoredProcrn .Parameters.Refreshrn End Withrnrn '将输入参数每项的值赋给Parameters集合并执行存储过程rn i = 1rn For Each prmNew In comNew.Parametersrn If prmNew.Direction = adParamInput Or prmNew.Direction = adParamInputOutput Thenrn prmNew.Value = Para(i)rn i = i + 1rn End Ifrn Next prmNewrn Set rs = comNew.Execute()rn End Ifrn Set ExecProc = rsrnEnd Functionrn其中,ProcName为存储过程名,Para是一个参数数组,调用时rnrn Dim v As Variantrn Dim rst As Recordsetrn rn ReDim v(2)rn rn v(1) = 123rn v(2) = "abc"rn rn Set rst = ExecProc("Test", v)rn程序运行时也没报错,可就是返回的记录集为空,那位大哥帮我看看。
存储过程调用时出错
我要在存储过程中返回一个结果集rn分别统计六张表中的记录数rn我用了一个临时表,统计出结果然后放进去,最后rnSELECT * FROM #TEPTABLErn在查询分析器中执行这个存储过程,得到正确结果rn在外面调用时,说在对象关闭时,不能执行操作.rn
怎样调存储过程
假若在数据库里有个存储过程DELNAME(),怎样在程序里调用呀?
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数