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

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

0

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可以忽略

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

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

0
weixin_43637245
weixin_43637245 回复: 还请您不啬指教
5 个月之前 回复
weixin_43637245
weixin_43637245 可这前提是有获取异常的方法啊
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MySQL调用存储过程显示非当前用户
最近在查看processlist排查问题的时候发现有一堆应用连接是用 'root'@'%'用户连接上来,在配置文件中并未配置root用的用户名和密码。那这个应用在调用存储过程的时候怎么会显示'root'@'%'用户呢? 存储过程定义的时候有两种: DEFINER用于指明存储过程是的定义用户,默认存储过程的定义者是当前用户,跟存储过程的使用权限无关。(只要对该存储过程有执行权限的用户都可
sql server 在存储过程中获取自身的存储过程名
create Procedure [dbo].[MyTest] as begin select OBJECT_NAME(@@PROCID); --获取存储过程名 end -- exec MyTest -- 执行存储过程测试结果
Mysql数据库如何查看某张表table被哪些存储过程procedure使用过
一、摘要 由于代码重构,修改了多张表结构,java后台代码做相应修改处理,开发人员内测没问题提交业务部门测试时发现,新客户取不到产品价格,原因是存储过程调用的还是就的数据表。为此,需要先找出哪些存储过程使用到了这些表,然后修改。那么问题来了,mysql数据库如何查看哪些存储过程使用了这些数据表呢? 二、mysql数据库存储过程信息查看 1、show 命令 1) SHOW STATUS查看存储过程...
php和mysql原生调用存储过程代码段
$sql = DELIMITER $$ DROP PROCEDURE IF EXISTS `ss`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `ss`() BEGIN IF NOT EXISTS (SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEM
MySQL数据库重命名存储过程
MySQL不支持将整个数据库(db schema)重命名,我们可以通过自己写一个存储过程来实现。 实现思路: 1)创建目标数据库。 2)执行命令:rename table 原库.表 to 目标库.表,将表重命名。 3)删除原库。 -- 说明:出于安全考虑,删除原库的操作在下述存储过程中已经注释掉,如果需要启用,去掉语句前的#号即可。 DELIMITER $$ CREATE D
php在执行mysql存储过程后执行其他数据库操作问题解决方法
问题描述:php在执行mysql存储过程后执行其他数据库操作时,报错Commands out of sync; you can't run this command now 产生原因:1、存储过程产生的结果集没有在php中获取;   2、存储过程的结果集没有被释放掉或者没有释放完全;   3、如果用mysql而非mysqli需要断开数据库再重新连接。 解决方法:1、使用mysqli驱动;
mysql 定时事件调用存储过程
1.首先检查是否开启了定时任务查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%'; 将事件计划开启 : SET GLOBAL event_scheduler = 1; 将事件计划关闭 : SET GLOBAL event_scheduler = 0; 关闭事件任务 : ALTER EVENT eventName ON COMPLETION PRESER...
查询哪些存储过程使用了某个表
SELECT DISTINCT b.name FROM dbo.syscomments a, dbo.sysobjects b WHERE a.id = b.id AND b.xtype = 'p' AND a.text LIKE '%officedba.CodeProductType%' ORDER BY name
mybatis结合mysql,调用含有入参和出参的存储过程的方式
先看看存储过程,存储过程名叫get_serial_no: BEGIN DECLARE v_category_code VARCHAR(20); DECLARE v_serial_no INT(5); DECLARE v_serial_code VARCHAR(20); DECLARE v_existsed TINYINT(1); START TRANSACTION;
Sql Server 查看存储过程在哪些作业中被调用
SELECT * FROM msdb.dbo.sysjobs JOB WITH( NOLOCK) INNER JOIN msdb. dbo.sysjobsteps STP WITH(NOLOCK ) ON STP .job_id = JOB .job_id WHERE STP .command LIKE N’% sp_name %’
修改、删除、重命名存储过程
<br />存储过程的修改<br />ALTER PROCEDURE procedure_name<br />[WITH ENCRYPTION]<br />[WITH RECOMPILE]<br />AS<br />Sql_statement<br /> <br />删除存储过程<br />USE book<br />GO<br />DROP procedure p_book1
怎么写mysql存储过程,并用php调用它?
http://zhidao.baidu.com/link?url=DmmuiPFlAi1XzJdOyqxI980MeuV3iGUM9TdM7zQVkkjt9sMJF92zXKu7YvElrp8-aXHtZ5rp1tMq4yoNrMu_7a 实现原理 首先,需要知道怎么写mysql存储过程,了解mysq存储过程语言, 其次,使用mysql工具创建存储
查询数据库存储过程的最后使用时间
 SELECTdatabase_id,*FROMsys.databasesWHEREdatabase_id&amp;gt; 4  --找到对应数据库的ID号,我需要的对应数据库的ID=7SELECT      a.nameAS存储过程名称,     a.create_dateAS创建日期,     a.modify_dateAS修改日期,     b.last_execution_timeAS最后执行日期...
修改MySQL procedure 名称的一种方法
UPDATE `mysql`.`proc` SET name = '', specific_name = '' WHERE db = '' AND   name = ''; 若为某用户赋予了该存储过程的上的一些权限,则可能还需更新`mysql`.`procs_priv`表中相应的信息: UPDATE `mysql`.`procs_priv` SET Routine_name =
MySQL 存储过程相互调用举例
create procedure prccharges(in orderno char(6), out shippingCharges float(4,2),out wrapCharges float(4,2)) begin select mshippingcharges into shipping
shell 脚本调用mysql存储过程
#!/bin/sh ##  The function of the script is used to balance statistics,we get ##  data from the table accseqs,after the analysis and calculation data, ##  the results will be inserted into the ta
mysql存储过程及修改数据
create procedure my_proc();//创建存储过程begin  //开始存储过程 declare my_id int; //自定义变量1  declare my_content varchar(50);//自定义变量2declare my_img varchar(50);//自定义变量3declare my_title varchar(50);//自定义变量4 DECLARE ...
mysql存储过程详解以及PHP调用MYSQL存储过程实例
mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存
查看表某个字段被哪些存储过程引用了
SELECT sm.object_id, OBJECT_NAME(sm.object_id), sm.definition FROM sys.sql_modules AS sm JOIN sys.objects AS o ON sm.object_id = o.object_id AND o.type='p' AND definition LIKE '%DataUnitId%'
sql数据库中怎么根据存储过程名字,查出存储过程的内容?
sp_helptext ‘存储过程名称’
【python 存储过程】python利用mysql存储过程更新数据
一、需求分析 由于管理费率配置错误,生成订单的还本付息表和订单表的各种金额,管理费之间的计算都有错误,需要进行数据订正。为此,为了造个轮子,以后省很多功夫,全部用程序去修正,不接入人工。二、带参数mysql 存储过程创建1、更新订单付息表(t_order_rapay)drop procedure if exists update_t_order_rapay; delimiter $$ create
mysql修改存储过程
今天修改mysql存储过程的时候贼蠢,直接alter的方法。然后就一直在报错。后来百度过后才晓得,现在MySQL还不支持修改存储过程的代码,只能先将原来的方法删除过后,再创建。 ...
mysql存储过程碰到中文乱码问题
mysql&amp;gt; call gen_cus; ERROR 1366 (HY000): Incorrect string value: '\xD7\xE3\xC9\xD0\xC5\xAE...' for co lumn 'l_shop_nick' at row 1   原因是因为命令行的客户端编码默认是latin1 mysql的版本是5.5 使用 service.msc 找到mys...
SHELL脚本直接调用存储过程
#!/bin/bash export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SID=orcl export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export PATH=$ORACLE_BASE/bin:$ORACLE_HOME/bin:$PATH
MySQL 的存储过程写法和Cursor的使用
以下文章转自:http://www.blogjava.net/itstarting/archive/2006/10/10/74256.htmlMySQL 的存储过程写法和Cursor的使用 对于MySQL,还是菜鸟。近期做个东西,写了一个MySQL 的存储过程,其中涉及Cursor的使用,如下:CREATE PROCEDURE `justifyGroupNum`()    NOT DE
java 通过存储过程名字 获取存储过程的参数列表,然后自动传参调用sp
实现思路:关键点在 通过存储过程的名字获取参数列表 数据库选择sql server 2012 查询的脚本是(注意要指定对应的数据库,如:使用 use test  或者 test.sys.parameters   test.dbo.sysobjects): select * from sys.parameters where object_id =object_id('test_sp'
mysql事件调用存储过程尽量只调一个
在本地mysql数据库创建一个事件,然后调用3个存储过程,是没问题的: DELIMITER $$ ALTER DEFINER=`root`@`localhost` EVENT `refresh_report` ON SCHEDULE EVERY 4 SECOND STARTS '2018-03-20 09:55:05' ON COMPLETION NOT PRESERVE ENABLE DO B...
C# 调用mysql存储过程
这是一个web api框架下的项目,主要是为了给他人调用。 public IDictionary> GetDishes(string date, string windowid, int enjoyid) { IDictionary> v_order_menu = new Dictionary>(); String
JDBC调用MySQL分页存储过程实现(一)
[code=&quot;java&quot;]DROP PROCEDURE IF EXISTS `pro_pager`; CREATE DEFINER = `root`@`%` PROCEDURE `pro_pager`( in p_pageNo int, /*当前页*/ in p_perPageCnt int, /*每页记录数*/ in p_sql VARCHAR(2000), /*查询sql...
shell如何调用带参数的mysql存储过程
mysql -h host -u user -p  --default-character-set=utf8 --execc  ute="source /root/task/stat_hour.sql"  /root/task/stat_hour.sql 把要执行的sql 写这里
利用navicat写mysql的存储过程
:最近项目经理让我给新的活动的预留一个插入红包和查看详情的sql,方便在项目出问题的做一些紧急操作,我想了下这里面还涉及到挺多逻辑和挺多表的一句句查也不方便啊,干脆写到存储过程里,于是开始在navicat写存储过程,因为是第一次写,在此记录一下,方便下次查看 (•̀ᴗ•́)و ̑̑ 。 :1、选择新建函数 DECLARE u1 bigint(20); :2.新建函数后会出现面的
JPA 调用存储过程
JPA 调用存储过程   要调用存储过程,我们可以通过EntityManager对象的createNativeQuery()方法执行SQL 语句(注意:这里说的是SQL语句,不是HPQL), 调用存储过程的SQL格式如下: {call 存储过程名称(参数1, 参数2, … )} 在EJB3 中你可以调用的存储过程有两种 1.无返回值的存储过程。 2.返回值为ResultSe
tp5如何调用数据库的存储过程求解。。。
tp5应该如何写
jfinal调用mysql存储过程
首先写一个内部类并实现ICallback接口: class CallbackTest implements ICallback { public String areaCodes;//传入参数 public List&amp;lt;Record&amp;gt; list;//返回值 @Override public Object call(Connection conn) throws SQ...
MYSQL存储过程在XML文本信息中读取数据节点信息,将节点中的数据存入数据库
我们应用到ExtractValue(char,/point1/point2)函数 案例 name sex BEGIN declare i int default 1; declare xml varchar(2000);    #xml文本信息,这里将其定义为字符串 declare count int default 1;     
【Java】如何调用MySQL存储过程
Java调用MySQL的存储过程,需要用JDBC连接,环境eclipse 首先查看MySQL中的数据库的存储过程,接着编写代码调用 mysql> show procedure status; +------+-------------+-----------+----------------+---------------------+---------------------+---
Mybatis调用MySQL存储过程
1.存储过程的简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台
JdbcTemplate调存储过程
使用spring JdbcTemplate均不用手动关闭连接 //JdbcTemplate  执行存储过程,不含事物。 ComboPooledDataSource ds = (ComboPooledDataSource )res.get(&quot;ds&quot;); //连接池获取        JdbcTemplate jt = new JdbcTemplate(ds);         String pa...
MySQL的存储过程和索引
一、简单的存储过程 1、无参存储过程 (1)编写   create procedure student()    begin    select * from student;    end; (2)调用存储过程   call student();   2、有参存储过程     这个参数分为:传入参数、传出参数  (1)编写   create procedure stud...
mysql 存储过程中不能使用 return 的解决办法
mysql 的存储过程是不能使用 return 语句的,只有存储函数才有此功能。那么,有没有替代 return 的关键字呢?     没有!     像 exit, quit 之类的关键字全没有!     怎么办?     使用功能稍次一些的 leave 关键字吧,此关键字可以模仿 return 的行为。     举一个例子吧:     SET FOREIGN_KEY_CHECKS
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java大佬的学习经验 java大佬学习技术