在mysql存储过程中使用prepare的问题 [问题点数:40分,结帖人theenpoal]

Bbs1
本版专家分:0
结帖率 100%
Bbs7
本版专家分:15986
版主
Blank
金牌 2014年2月 总版技术专家分月排行榜第一
Blank
优秀版主 2016年10月优秀小版主
Blank
银牌 2014年1月 总版技术专家分月排行榜第二
2013年12月 总版技术专家分月排行榜第二
Blank
微软MVP 2014年4月 荣获微软MVP称号
Bbs1
本版专家分:0
Bbs7
本版专家分:26938
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
状元 2005年 总版技术专家分年内排行榜第一
2004年 总版技术专家分年内排行榜第一
Blank
进士 2006年 总版技术专家分年内排行榜第六
2003年 总版技术专家分年内排行榜第八
Blank
金牌 2005年6月 总版技术专家分月排行榜第一
2005年5月 总版技术专家分月排行榜第一
2005年4月 总版技术专家分月排行榜第一
2005年3月 总版技术专家分月排行榜第一
2005年2月 总版技术专家分月排行榜第一
2005年1月 总版技术专家分月排行榜第一
2004年12月 总版技术专家分月排行榜第一
2004年11月 总版技术专家分月排行榜第一
2004年10月 总版技术专家分月排行榜第一
2004年9月 总版技术专家分月排行榜第一
2004年8月 总版技术专家分月排行榜第一
2004年7月 总版技术专家分月排行榜第一
2004年6月 总版技术专家分月排行榜第一
2004年5月 总版技术专家分月排行榜第一
2004年4月 总版技术专家分月排行榜第一
2004年3月 总版技术专家分月排行榜第一
2004年1月 总版技术专家分月排行榜第一
2003年12月 总版技术专家分月排行榜第一
Bbs7
本版专家分:26938
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
状元 2005年 总版技术专家分年内排行榜第一
2004年 总版技术专家分年内排行榜第一
Blank
进士 2006年 总版技术专家分年内排行榜第六
2003年 总版技术专家分年内排行榜第八
Blank
金牌 2005年6月 总版技术专家分月排行榜第一
2005年5月 总版技术专家分月排行榜第一
2005年4月 总版技术专家分月排行榜第一
2005年3月 总版技术专家分月排行榜第一
2005年2月 总版技术专家分月排行榜第一
2005年1月 总版技术专家分月排行榜第一
2004年12月 总版技术专家分月排行榜第一
2004年11月 总版技术专家分月排行榜第一
2004年10月 总版技术专家分月排行榜第一
2004年9月 总版技术专家分月排行榜第一
2004年8月 总版技术专家分月排行榜第一
2004年7月 总版技术专家分月排行榜第一
2004年6月 总版技术专家分月排行榜第一
2004年5月 总版技术专家分月排行榜第一
2004年4月 总版技术专家分月排行榜第一
2004年3月 总版技术专家分月排行榜第一
2004年1月 总版技术专家分月排行榜第一
2003年12月 总版技术专家分月排行榜第一
Bbs1
本版专家分:0
proc中使用prepare问题
用proc写了一个函数,希望能够用count_table("表名")的方式把表中的记录总数显示出来,但是运行的时候总是显示0条记录 rn代码如下: rnvoid count_table(char *table_name) rn rnEXEC SQL BEGIN DECLARE SECTION; rnchar statement[100]; rnchar t_name[100]; rnint rec_count; rnEXEC SQL END DECLARE SECTION; rnstrcpy(statement,"SELECT COUNT(*) FROM :table"); rnstrcpy(t_name,table_name); rnprintf("table_name=%s",t_name); rnEXEC SQL PREPARE dynamicsql FROM :statement; rnEXEC SQL EXECUTE dynamicsql USING :t_name; rnprintf("COUNT:%d\n",sqlca.sqlerrd[2]); rnrnrn
struts2中的prepare问题
struts2中的<em>prepare</em><em>问题</em>。rn在一action里,我用到了<em>prepare</em>User(),也就是在执行user这个action前执行一rnrn些逻辑。但是,如果在<em>prepare</em>User() 里执行的某些逻辑发生错误,我想怎么样rnrn直接就跳转到错误页面。rn现在是,我写return 或者直接throw 都会继续执行 user这个action。
mediaPlayer中是否使用prepare问题
MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(this, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM)); mediaPlayer.<em>prepare</em>(); mediaPlayer.sta...
mysql存储过程使用事务
咳咳。。怎么创建存储过程就略过辣,直接从begin开始吧: BEGIN DECLARE error INTEGER TINYINT 0;   #声明一个error标志是否出错,初始值为0 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET error =-1; #如sql异常,将errno设置为-1且后续执行退出 STRAR
MySQL存储过程 prepare
参考文章: https://maoyifa100.iteye.com/blog/1900305 https://www.aliyun.com/jiaocheng/1140825.html SET @xx=&amp;quot;name,bm&amp;quot;; SET @sql1 = CONCAT('select ',@xx,' from people'); <em>prepare</em> s1 from @sql1; execute s1; d...
mysql prepare 存储过程使用
语法 [sql] PREPARE statement_name FROM sql_text /*定义*/   EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/   DEALLOCATE PREPARE statement_name /*删除定义*/    例 [sql]
mysql存储过程之动态sql
         Mysql 5.0 以后,支持了动态sql语句,我们可以通过传递不同的参数得到我们想要的值   这里介绍两种在存储过程中的动态sql:     set sql = (预处理的sql语句,可以是用concat拼接的语句)   set @sql = sql   PREPARE stmt_name FROM @sql;   EXECUTE stmt_name;   {DEA...
mysql prepare 存储过程使用
语法 [sql] PREPARE statement_name FROM sql_text /*定义*/    EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/    DEALLOCATE PREPARE statement_name /*删除定义*/    例 [sq...
mysql存储过程详细教程
原文 记录MYSQL存储过程中的关键语法: DELIMITER // 声明语句结束符,用于区分; CEATE PROCEDURE demo_in_parameter(IN p_in int) 声明存储过程 BEGIN …. END 存储过程开始和结束符号 SET @p_in=1 变量赋值 DECLARE l_int int unsigned default 40
mysql存储过程中变量的使用
在<em>mysql存储过程</em>中,声明一个变量可以<em>使用</em>declare vi_num(变量名) int(数据类型) 的方式。 还可以直接<em>使用</em>@变量名的方式,直接<em>使用</em>一个变量。 请看以下存储过程:  drop PROCEDURE if EXISTS pro2;  CREATE PROCEDURE pro2()  BEGIN DECLARE d INT; set @d=3;  SELECT
Mysql存储过程中使用cursor
一、表学生表CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY (`stuNum`)) ENGINE=InnoDB ...
MYSQL存储过程中使用游标
DELIMITER $$ DROP PROCEDURE IF EXISTS getUserInfo $$ CREATE PROCEDURE getUserInfo(in date_day datetime)-- -- 实例-- 存储过程名为:getUserInfo-- 参数为:date_day日期格式:2008-03-08--    BEGINdeclare _userName varcha...
mybatis 中 使用MYSQL存储过程
#mybatis 中 <em>使用</em>MYSQL存储过程; ##1.有学生表student(id,name,age,money) ##2.创建查询学生表信息的存储过程: ``` delimiter | create Procedure showAllstu() BEGIN SELECT * FROM student ORDER BY id DESC LIMIT 6; EN...
MySQL C API预处理函数call存储过程
drop procedure if exists SelectAll; delimiter $ create procedure SelectAll(in TableName char(64)) begin set @sql = 'select * from ?'; <em>prepare</em> stmt from @sql; set @p = TableName; execute
mysql prepare存储过程
近来用了下存储过程,简单的记录总结一下。 <em>使用</em>存储过程,可以对数据库进行更复杂写的逻辑处理。比如说,我要将一个表subscriber的最大id获取到,然后复制给另外一张表usage的auto_increment,就可以这样做。 1. 获取最大id SET @m = (SELECT MAX(id) + 10000 FROM subscriber); @m为所要<em>使用</em>的参数 2. 准备赋值AU...
mysql动态执行sql,PREPARE 的变量长度太长,不能execute怎么办?有解决办法么
RT: 今天写了个存储过程,因为需要一个SQL里的字段内容是动态的,所以打算用动态SQL,这是那部分的代码: SET @MSG_CLIENT=CONCAT('INSERT INTO ALARM_MES
Delphi中的Prepare
1)rn with qryGetId dorn beginrn close;rn ParamByName('Id').asstring:=vDefUseId;rn if not Prepared then Prepare;rn open;rn end; rnrnrn2)rn with qryGetId dorn beginrn close;rn ParamByName('Id').asstring:=vDefUseId;rn open;rn end; rnrn请问 if not Prepared then Prepare; 这句话写与不写有什么差异?结果好像都一样rnrnrn
mysql存储过程中遇到的问题
下面这是我写好的存储过程,用navicat 中‘工具’--——>'数据传输' 导出的sql文件, DROP PROCEDURE IF EXISTS `PROC_SUMMARY_STAGE`; DELIMITER ;; CREATE DEFINER=`mysql`@`%` PROCEDURE `PROC_SUMMARY_STAGE`() BEGIN  DECLARE personPla
MySQL存储过程的使用
创建一个stu表 在数据库chapter06中,创建表stu,并向表中添加数据<em>使用</em>DESC命令,查看stu表结构<em>使用</em>SELECT * FROM stu查看表数据创建存储过程创建一个存储过程addcount,能够获取表stu中的记录数和id的和调用存储过程可以看出,stu表中共有三条数据,id之和为6 这个存储过程,创建了一个cur_id的光标,<em>使用</em>这个光标,来获取每条记录的id,<em>使用</em>REPEAT
Mysql 中的Prepare 预编译
PREPARE语句用于预备一个语句,并指定名称statement_name,以后引用该语句。语句名称对大小写不敏感。preparable_stmt可以是一个文字字符串,也可以是一个包含了语句文本的用户变量。该文本必须表现为一个单一的SQL语句,而不是多个语句。在这语句里,‘?'字符可以被用于标识参数,当执行时,以指示数据值绑定到查询后。‘?'字符不应加引号,即使你想要把它们与字符串值结合在一起。参
mysql存储过程使用
最新项目中逻辑有一些复杂,<em>使用</em>到存储过程,下面把<em>使用</em>存储过程的方法记录下来,也方便大家<em>使用</em>。<em>使用</em>游标时,需要注意的和主要语句都<em>使用</em>加黑字体标注出来了,这样看的更是一目了然。1.创建存储过程语句-- 判断是否存在该名称的存储过程,如果存在先删除再次创建存储过程 DROP PROCEDURE IF EXISTS generate_degree_reports; CREATE PROCEDURE gen...
mysql存储过程中的循环嵌套问题
[code=sql]beginrndeclare i int;rndeclare numareaId int(10);rndeclare currentareaId int(10);rnSELECT COUNT(areaId),MIN(areaId) INTO @a,@b FROM option_area_info;rnrnSET numareaId=@a;rnSET currentareaId=@b;rnrnloop1:WHILE numareaId>0 DOrnSET @AID = currentareaId;rnrnrnrnrnrnrnSET i=1;rnloop2:while i=date_sub(curdate(),interval i day) and createTime=date_add(date_sub(curdate(),interval i day),interval 1 day) and loginTime=date_sub(curdate(),interval i day) and createTime=date_add(date_sub(curdate(),interval i day),interval 2 day) and loginTime=date_sub(curdate(),interval i day) and createTime=date_add(date_sub(curdate(),interval i day),interval 3 day) and loginTime=date_sub(curdate(),interval i day) and createTime=date_add(date_sub(curdate(),interval i day),interval 4 day) and loginTime=date_sub(curdate(),interval i day) and createTime=date_add(date_sub(curdate(),interval i day),interval 5 day) and loginTime=date_sub(curdate(),interval i day) and createTime=date_add(date_sub(curdate(),interval i day),interval 6 day) and loginTime=date_sub(curdate(),interval i day) and createTime=date_add(date_sub(curdate(),interval i day),interval 7 day) and loginTime=date_sub(curdate(),interval i day) and createTime
关于mysql存储过程中占位符的使用问题
mysql升级,以前4.0,没用过存储过程rn现在升级5.x了,终于可以用了rn但是<em>使用</em>中发现一个<em>问题</em>rnCreate PROC trnBEGINrn set @a = 'tt';rn set @sql = 'select * from ?';rn PREPARE s from @sql;rn EXECUTE s using @a;rn DEALLOCATE PREPARE s;rnendrn这样的就会报错,也就是说 在 @sql中的 ? 认不出来rnrn如果@sql的值不是sql语句,而是普通的字符串,就没有这个<em>问题</em>,如:rnCreate PROC trnBEGINrn set @a = 'tt';rn set @sql = 'select ?';rn PREPARE s from @sql;rn EXECUTE s using @a;rn DEALLOCATE PREPARE s;rnendrn这个就能整整的显示出来,显示 ttrnrn猜想可能是由于@sql 值为sql语句的<em>问题</em>,哦,就是传说中的预制sql语句rn应该怎么样解决呢?rn这个参数怎么才能传入呢?rn先在这里感谢大家了。
mysql存储过程中游标问题
这是存储过程代码,功能是审核单据,如果可以审核,就把单据上的数量循环写入库存表,我仔细确认了表名,表字段都是完全正确的,游标查询也是有数据的,而且前面的判断条件都没<em>问题</em>,可是就是无法写入数据,返回是rollback; set come = 2;rn 而且连带<em>问题</em>是,这个存储过程执行一次后,MYSQL数据库就再无法insert数据,非要重启才能insertrn我知道肯定是这个存储过程有<em>问题</em>,但我找不出<em>问题</em>在哪里,请大家帮帮忙,,谢谢rnrnrn存储过程rnCREATE DEFINER = 'root'@'%' PROCEDURE `VerifyPurchase`(rn IN ids INTEGER(11),rn IN UserID INTEGER(11),rn OUT come INTEGER(11)rn )rn NOT DETERMINISTICrn CONTAINS SQLrn SQL SECURITY DEFINERrn COMMENT ''rnBEGINrn DECLARE err INTEGER DEFAULT 0;rn DECLARE b INTEGER default 0;rn DECLARE Warehouse_ID INTEGER;rn DECLARE Material_ID INTEGER;rn DECLARE Unit_ID INTEGER;rn DECLARE Qty1 CHAR;rn DECLARE TheoreticalWeight1 CHAR;rnDECLARE ActualWeight1 CHAR;rnDECLARE Money1 CHAR;rn DECLARE cur_1 CURSOR FOR select MaterialID,WarehouseID,UnitID,Qty,Money,TheoreticalWeight,ActualWeight from purchase_view where id=ids; #定义游标rn DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1;rn DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err=1;rn START TRANSACTION;rn select count(*) INTO @IsExists from purchase where id=ids; #检查单据是否存在rn SET b = 0;rn set come = @IsExists;rn if @IsExists 0 thenrn set come = 8602; #单据已审核rn elsern select Date INTO @Date from purchase where id=ids; #检查期间rn SET b = 0;rn if CompareCurrDate(@Date) = FALSE thenrn set come = 8603; #单据日期小于当前期间rn elsern # 写入审核人及日期rn update purchases set verify = UserID , VerifyDate = now() where id=ids;rn SET b = 0;rn # 写入即时库存rn OPEN cur_1;rn FETCH cur_1 INTO Material_ID, Warehouse_ID, Unit_ID,Qty1,Money1,TheoreticalWeight1,ActualWeight1; #获取第一条记录rn while b<>1 dorn insert into stock (MaterialID,WarehouseID,UnitID,Qty,Money,TheoreticalWeight,ActualWeight) values (Material_ID, Warehouse_ID, Unit_ID,Qty1,Money1,TheoreticalWeight1,ActualWeight1);rn FETCH cur_1 INTO Material_ID, Warehouse_ID, Unit_ID,Qty1,Money1,TheoreticalWeight1,ActualWeight1; #取下一条记录rn end while;rn close cur_1;rn set come = 1;rn end if;rn end if;rn end if;rnrn if err = 0 thenrn commit;rn elsern rollback;rn set come = 2;rn end if;rnEND;rn
!!!statement和prepare的插值问题
如果要将变量str1,date2,double3这3个类型分别为string,date,double的值插入到表table1中(假定刚好是4个列)。rnrn1)请问,能否用statement实现。rn2)请问用<em>prepare</em>statement的话,sql表达式应该如何书写。rn3)上述3个变量中有可能为空,是否可以不做条件判断???
MYSQL存储过程中 表名 使用变量
# 该存储过程定义了几个传入参数,前缀都是para_ # 该存储过程的此部分功能是,查询根据传入参数动态生成的tbl_name表名的表中 SET tbl_name = CONCAT(&quot;result_&quot;, para_user); SET @STMT := CONCAT(&quot;SELECT COUNT(*) INTO @num_count FROM &quot;, tbl_na...
MySql存储过程中如何使用变量
我的目的是想把一张表中的n个字段用一个变量表示,rn比如我定义变量student,在TB_Student表里有3人(三条记录),三人分别是:dog、cat、monkeyrn我想用一个字段表示即Student =dog、cat、monkeyrn应该怎么写存储过程rn
关于在存储过程中使用prepare问题
mysql中<em>使用</em><em>prepare</em>,惯常的例子是这样的:rn[code=sql]mysql> PREPARE prod FROM "INSERT INTO examlple VALUES(?,?)"; rnmysql> SET @p='1'; rnmysql> SET @q='2'; rnmysql> EXECUTE prod USING @p,@q;[/code] rnrnrn然而存储过程中<em>使用</em><em>prepare</em>,为什么也是必须要<em>使用</em>@开头的变量。。。这让我对存储过程的一下就凌乱了rn[code=sql]delimiter \\rncreate procedure pro01(in rang text)rnbeginrn set @que=concat('select * from bank where customerName in (',rang,');');rn <em>prepare</em> statement01 from @que;rn execute statement01;rnend\\rndelimiter ;[/code]rnrn而这样是不行rn[code=sql]delimiter \\rncreate procedure pro01(in rang text)rnbeginrndeclare que text; rnset que=concat('select * from bank where customerName in (',rang,');');rn <em>prepare</em> statement01 from que;rn execute statement01;rnend\\rndelimiter ;rn[/code]rnrnrn求告知这是为什么?rn
prepare 和 row_count()一起使用的误区
今天用PREPARE动态处理了UPDATE语句后,发现ROW_COUNT()函数返回的老是-1 ,检查了下原来是把row_count()放到了deallocate 语句后面了。 DELIMITER $$DROP PROCEDURE IF EXISTS `test`.`sp_test_<em>prepare</em>`$$CREATE DEFINER=`root`@`localhost` PROCE...
使用EXEC SQL PREPARE出错!
EXEC SQL BEGIN DECLARE SECTION;rn char strSql[1000];rn EXEC SQL END DECLARE SECTION;rn strcpy(strSql,"SELECT sa_ins_id FROM tbl_ins_inf_new WHERE sa_ins_id='1100060020001'");rn memset(H_username,0,sizeof(H_username));rn memset(H_password,0,sizeof(H_password));rn strcpy(H_username,"sa");rn EXEC SQL CONNECT :H_username IDENTIFIED BY :H_password ;rn if (sqlca.sqlcode!=0)rn rn printf("Error occur!");rn return -1;rn rn EXEC SQL USE toplink;rn if (sqlca.sqlcode!=0)rn rn printf("Use toplink error!");rn return -2;rn rnrn printf("The sql is: %s\n",strSql);rn EXEC SQL PREPARE select_opr1 FROM :strSql;rn if (sqlca.sqlcode!=0) 这里出错:sqlca.sqlcode返回-193.rn rn printf("SQL Prepare Error!\n");rn printf("Error code is:%d\n",sqlca.sqlcode);rn exit(-1);rn rn请问是什么<em>问题</em>?rn
关于Mybatis 使用MySql存储过程的问题
mybatis 通过xml方式<em>使用</em>mysql的存储过程,在本地测试的时候一切正常,但是放到服务器上执行的sql语句就变了rn在本地测试的时候执行的是 call p_mishi_selectFavoriteList(?) rn在服务器上就变成了 select count(0) from (call p_mishi_selectFavoriteList(?)) tmp_countrn请问各位大神知道是什么<em>问题</em>么?rnrn一下是配置rnrn call p_mishi_selectFavoriteList(#userid,jdbcType=BIGINT,mode=IN)rnrnrn rn rn rn rn rn rn rnrnrn调用: List favList = favoriteMapper.selectFavoriteList(userId);
MYSQL存储过程游标的使用问题
我写了个存储过程,里面有2个游标,但是第二个循环只执行了一次,要怎么弄才行啊?rn大体代码:rnrn DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;rn OPEN cur1;rn REPEATrn FETCH cur1 INTO v_CompanyID;rnrn IF NOT done THENrn 。。。。。。。rn END IF;rn UNTIL done END REPEAT;rn CLOSE cur1;rn rn SET done = 0;rn OPEN cur2;rn REPEATrn FETCH cur2 INTO v_UNITED_ID, v_CompanyID, v_MAIL_HASH_CODE, v_OTHER;rn IF NOT done THENrn 。。。。。。。。rn END IF;rn UNTIL done END REPEAT;rn CLOSE cur2;
mysql存储过程使用参数问题求助
[size=16px]create procedure Calcu_DayTotal(inout mydate varchar(15))rnbeginrndeclare stopFlag int default 0; rndeclare v_id int;rndeclare v_total float;rnif mydate='' thenrn set mydate= adddate(current_date,interval -1 day);rnend if;rndeclare v_Fetch cursor for rnselect id,(mortotal+noontotal+nighttotal) as total from ribao rnwhere ddate= mydate;[/size]........rn想传参数给存储过程,如果mydate为空,则指定为前一天,否则按mydate查询数据库,我加了if语句一直报错,rn查了查原因,好像是if语句位置不能出现在declaer前面,陷入困境了,mydate必须在select之前处理,可游标的定义又不能定义在if后面,这该如何解决啊?
关于Proc中动态SQL语句的PREPARE问题
从各种参考文档上都写着这种情况下,[color=#FF0000]SQL语句只在PREPARE时解析一次,以后可以执行多次,并随rn输入宿主变量的不同而执行结果不同[/color],rn但是我测试下来之后貌似不是这个样子的啊,代码如下:rnrn[code=c] rn VARCHAR strtmp[80];rn strtmp.len = sprintf(strtmp.arr,"DELETE FROM TEST WHERE ID=:v1");rn EXEC SQL PREPARE tmps FROM :strtmp;rn while(1)rn rn printf("Enter the num what you want to del:");rn scanf("%d",&id);rn if(id == 0)rn break;rn EXEC SQL EXECUTE tmps USING :id; rn rnEXEC SQL COMMIT ;[/code]rn只有在第一次 EXECUTE 的时候没有报错,其余时候都是报错的:rn[code=c]ORACLE error:ORA-01001: invalid cursor rnORACLE error:ORA-01012: not logged on [/code]rnrn这是什么情况啊!
prepare case
老师给的html例子 很经典 无论是初学者还是已经有一些经验的都值得一看
MySql存储过程的问题
-- --------------------------------------------------------------------------------rn-- Routine DDLrn-- --------------------------------------------------------------------------------rnDELIMITER $$rnrnCREATE DEFINER=`root`@`` PROCEDURE `new_routine`(rn _startMonth int,rn _Endmonth int)rnBEGINrnrnDECLARE stmt VARCHAR(4000);rnset @tablename='ClubActionLog'+@month;rnSET stmt=CONCAT('Create Table ','@tablename','Select * From ClubActionLog Where LogMonth between _startMonth and _Endmonth');rnset @selsql=stmt;rn<em>prepare</em> s1 from @selsql;rnexecute s1;rnDEALLOCATE PREPARE s1;rnrnEND$$rnrn希望得到的结果是查询ClubActionLog表中LogMonth列在传进来的值之间的时候把创建一张新的表 并且把记录复制到一张新的表,新表的表名是原表表名加上本月月份rn不过这个好象不能执行,希望各位高手帮我看看好吗rn在线等!!!
mysql存储过程问题
各位大虾,我的mysql版本是:5.0.18-logrn为什么我在过程体内用decalre声明变量会出错?rn代码:rnmysql> CREATE PROCEDURE p12 (IN parameter1 INT)rn -> BEGINrn -> DECLARE variable1 INTrn -> SET variable1 = parameter1 + 1rn -> IF variable1 = 0 THENrn -> INSERT INTO t VALUES (17)rn -> END IFrn -> IF parameter1 = 0 THENrn -> UPDATE t SET s1 = s1 + 1rn -> ELSErn -> UPDATE t SET s1 = s1 + 2rn -> END IFrn -> END;rnrn错误:rnERROR 1064 (42000): You have an error in your SQL syntax; check the manual thatrncorresponds to your MySQL server version for the right syntax to use near 'INTrnSET variable1 = parameter1 + 1rnIF variable1 = 0 THENrnINSERT INTO t VALUES (1' at line 3
mysql存储过程问题
假设 现在有一个表student 有两个字段 id ,name 想写一个存储过程 查出 id从1到5的学生 然后将他们的 name改为'text' 现在的<em>问题</em>是 查找和修改的存储过程我会写,但将两个过程写在一个过程里不会,不知道用什么得到 查询出的结果 在利用此结果来完成修改操作,哪位大虾告诉下 小弟 谢谢啦
MySQL存储过程的问题
我在mysql中写了一个存储过程,有一个出参.存储过程是执行发对了的.但就是不能把出参代出来.传出来的是一个null值.请问怎么才能在外面接受到存储过程传出来的值.谢谢
mysql存储过程中遇到的事务问题
exe_loop:LOOP START TRANSACTION ; SET autocommit = 0; IF(rowcount &gt; 0 AND batch_times
mysql存储过程中(varchar)变量的问题
DELIMITER $$rnrnDROP PROCEDURE IF EXISTS `codebush`.`sp_truncate_all_table` $$rnCREATE PROCEDURE `sp_truncate_all_table`()rnBEGINrnrndeclare done INT DEFAULT 0;rndeclare tbl varchar(64);rndeclare cur_tbl cursor for select table_name from information_schema.tables where table_schema = 'codebush' and table_type='base table';rndeclare continue handler for not found set done = 1;rnrnopen cur_tbl;rnrepeatrn fetch cur_tbl into tbl;rn truncate table tbl;rnuntil done end repeat;rnclose cur_tbl;rnrnEND $$rnrnDELIMITER ;rnrn上面的存储过程我一执行 CALL sp_truncate_all_table() 就报 [color=red][size=large]Table 'codebush.tbl' doesn't exist[/size][/color]我是想把codebush数据库中的数据清空,循环执行 truncate table tbl; tbl是定义的变量,通过cursor取得表名,然后truncate那个表。mysql把tbl不当作变量赋值,直接把tbl当作了表名,就报了tbl那个表不存在。大家有什么好的解决方法呢?
mySql存储过程中一个蹊跷的问题
如下存储过程,我先拼一个字符串,比如 'SELECT COUNT(*) FROM tableName',然后执行这个字符串,OK,没<em>问题</em>。但当这个字符串中包含变量时就执行不了了,比如'SELECT COUNT(*) FROM _table; --_table为变量',请高手帮忙,不甚感激:rnrnDROP PROCEDURE IF EXISTS `sp_w_select`;rnCREATE PROCEDURE `sp_w_select`(rn OUT rowsTotal INT,rn IN tableName VARCHAR(255)rn)rn NOT DETERMINISTICrn SQL SECURITY DEFINERrn COMMENT ''rnBEGINrn DECLARE tempCount VARCHAR(1000);rn DECLARE tempSelect VARCHAR(1000);rnrn --<em>问题</em>出在下面这句,当执行的字符串中包含变量时怎么也不行rn SET @tempCount = CONCAT('SET rowsTotal = (SELECT COUNT(*) FROM ',tableName,')');rnrn PREPARE countStmt FROM @tempCount;rn EXECUTE countStmt;rn DEALLOCATE PREPARE countStmt;rn rn SET @tempSelect = CONCAT('SELECT * FROM ', tableName);rn PREPARE mainStmt FROM @tempSelect;rn EXECUTE mainStmt;rn DEALLOCATE PREPARE mainStmt;rnEND;
MySQL存储过程 MySQL存储过程
MySQL存储过程 MySQL存储过程 MySQL存储过程 MySQL存储过程 MySQL存储过程
mysql存储过程mysql存储过程
<em>mysql存储过程</em> <em>mysql存储过程</em> <em>mysql存储过程</em> <em>mysql存储过程</em>
ADOQuery中没有Prepare了吗?
TQuery中有Prepare过程进行优化,ADOQuery好像没有啊!那么,如何进行优化呢?
pdo 中prepare怎么用
PDO加载模块成功,但是我在写查询语句的时候rn$sql = 'select * from table where id=:id';rn$sth = $dbh-><em>prepare</em>($sql);rn$sth->execute(array(':id' =>1));rnrn运行出现下面错误rnFatal error: Call to a member function <em>prepare</em>() on a non-object in。。。。。index.php on line 7
MySQL存储过程问题
小弟建立了一个存储过程如下:rnrn[code=SQL]use userDB;rndrop procedure if exists usp_test;rncreate procedure usp_test() rn beginrn select * from users;rn end;[/code]rnrn但是报了一个错误:rnrnError Code : 1064rnYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from users' at line 3rn(0 ms taken)rnrnError Code : 1064rnYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'end' at line 1rn(0 ms taken)rn请问这是怎么回事啊?怎么解决呢?
mysql存储过程问题??
mysql中写了一段存储过程,举个例子,我数据库中有两个值一个是“[color=#FF0000]001[/color]”,另一个是“[color=#FF0000]餐饮软件名[/color]”,我分别传这两个值,其中“[color=#FF0000]001[/color]”返回的值‘[color=#FF0000]001A[/color]’,而“[color=#FF0000]餐饮软件名[/color]”返回的是一个“[color=#FF0000]null[/color]”,现在想请教大家,怎样让我的“餐饮软件名”返回的值是“[color=#FF0000]餐饮软件名A[/color]”rnrn[code=sql]top: BEGIN rnDECLARE tableid INTEGER;rnDECLARE aliasint INTEGER; rnDECLARE count_setup INTEGER; rnDECLARE alias_long varchar(400); rnDECLARE alias VARCHAR(1) DEFAULT 'A'; rnDECLARE errorcode INTEGER DEFAULT 0 ; rnrnif ( ta_abbre is null ) then return ( null ) ; rnend if;rnBEGINrnDECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET errorcode = 1 ; rnselect table_id into tableid from tw_table where table_abbre=ta_abbre;rnEND; rnif (tableid is null ) then return ( null );rnend if;rnBEGINrnDECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET errorcode = 1 ;rnselect group_concat(right(table_alias,1)) into alias_long from dc_ordermaptable where table_id=tableid and is_hang=0 group by table_id;rnEND;rnif ( alias_long is null ) then return ( concat( ta_abbre , 'A' ));rnelsernset aliasint=65 ;rnset alias = char( aliasint );rnflag: while aliasint =65 dornif ( POSITION( alias IN alias_long) = 0 ) thenrnleave flag;rnend if;rnset aliasint = aliasint +1 ;rnset alias = char( aliasint );rnend while;rnend if;rnif ( ascii ( alias )> 69 ) then return ( null ) ;rnend if;rnreturn ( concat( ta_abbre , alias ));END[/code]
Mysql存储过程的问题
大家好:rn下面是我写的一个存储过程第3、4步不会写了,希望大家能补充完整,谢谢rncreate procedure login(rn in @username varchar(20),rn in @password varchar(20)rn)rnbegin rn --声明中间变量 rn declare roleId1 varchar(20); rn declare purviewIdList1 varchar(20);rn declare menuList varchar(20);rn --1.根据用户名,密码确定角色 rn set roleId1 = select roleId rn from t_role rn where name = @username;rn --2.根据角色确定权限[color=#FF0000]列表[/color]rn[color=#FF0000] set purviewIdList1 = select purviewId rn from relationship_104rn where roleId = roleId1;[/color]rn --3.根据权限列表获取菜单列表rnend;rn
mysql存储过程中select取值的问题
[code=SQL]rnDELIMITER $$rnrnUSE `db_clinicaltrials101`$$rnrnDROP PROCEDURE IF EXISTS `p6`$$rnrnCREATE DEFINER=`root`@`localhost` PROCEDURE `p6`()rnBEGINrnDECLARE i INT;rnDECLARE g INT;rnSET i=1;rnWHILE i<188 DOrnset g=select count(id) from jos_content where id=i;//这边的语句语法错误~rnif g==1 thenrnINSERT INTO jos_content_2and3categoryid(2categoryid,3categoryid,content_id) VALUES(0,0,i);rnend if;rnSET i=i+1;rnset g=0;rnEND WHILE;rnEND$$rnrnDELIMITER ;rnrncall p6();rn[/code]
MySQL存储过程中的concat链接问题
存储过程中,有段代码为:rnset exec_sql_endlinenumber = CONCAT('Create TEMPORARY Table tmp_table_endlinenumber(rn select 0 as start_id,l_ID as end_id,0 as start_line,i_line_number as end_line from iss_ej_originallog rn where b_is_cleaned=\'0\' and vc_device_id=\'',device_id,'\' and d_ej_date = DATE_FORMAT(\'',ej_date,'\',\'%Y%m%d\')rn and LEFT(LTRIM(vc_ej_data),2)=\'--\'))'); rnrnSELECT exec_sql_endlinenumber; rnrn输出为:nullrnrn如果将“ and LEFT(LTRIM(vc_ej_data),2)=\'--\'))'); ”的判断条件删除,则输出我想要的rnrn另外,我如果修改为:rnDECLARE _start_constants VARCHAR(4) DEFAULT '\'- \'';rnset exec_sql_startlinenumber = CONCAT('Create TEMPORARY Table tmp_table_startlinenumber(rn select l_ID as start_id,0 as end_id,i_line_number as start_line,0 as end_line from iss_ej_originallogrn where b_is_cleaned=\'0\' and vc_device_id=\'',device_id,'\' and d_ej_date = DATE_FORMAT(\'',ej_date,'\',\'%Y%m%d\') rn and LEFT(LTRIM(vc_ej_data),2)=',_start_constants,')');rnSELECT exec_sql_startlinenumber;rnrn输出为:nullrnrn如果将“ and LEFT(LTRIM(vc_ej_data),2)=',_start_constants,')');”的判断条件删除,则输出我想要的rnrn以上不可思议的<em>问题</em>,请大侠协助,谢谢了!
MySql存储过程问题
[code=SQL]rnCreate PROCEDURE USP_CreateLogTables(in Pointer datetime,in Counts int)rnbeginrn declare CountPointer intrn declare DateString varchar(20)rn declare TableName varchar(50)rn declare ExecuteSQL varchar(50)rn declare SQLTxt varchar(max)rn rn Set CountPointer = Countsrn rn Set SQLTxt=' CREATE TABLE dbo.Tracker_Log(rn LogID bigint PRIMARY KEY auto_increment NOT NULL,rn TrackerID varchar(50) NOT NULL,rn LogTime datetime NOT NULL,rn SessionId varchar(50) NOT NULL,rn PassportID bigint NULL,rn UserID bigint NULL,rn ClientIP varchar(64) NULL,rn ServerIP varchar(64) NULL,rn CurrentUrl varchar(255) NULL,rn ReferrerUrl varchar(255) NULL,rn ClickLinkUrl varchar(255) NULL,rn ClickLinkTitle nvarchar(200) NULL,rn CurrentClientTime datetime NULL,rn CurrentServerTime datetime NULL,rn ClientServerTimeDif bigint Null,rn ServerExecuteTime bigint NULL,rn NetTransTime bigint NULL,rn ServerResponseTime datetime NULL,rn ClientLoadTime bigint NULL,rn UserDwellTime bigint NULLrn )'rnrn While(CountPointer > 0)rn Beginrn Set DateString = Right(Cast(DateName(yyyy, Pointer) as varchar(4)), 2) + '_' +rn Right('0' + Cast(Month(Pointer) as varchar(2)), 2) + '_' +rn Right('0' + Cast(DatePart(day, Pointer) as varchar(2)), 2)rnrn Set TableName = 'Tracker_Log_' + DateStringrn rn Select ExecuteSQL = Replace(SQLTxt, 'Tracker_Log', TableName)rnrn execute(ExecuteSQL)rnrn Set CountPointer = CountPointer - 1rn Set Pointer = DateAdd(dd, CountPointer, getDate())rn EndrnrnENDrn[/code]rnrn无论我怎么改,IDE都提示存在错误rn我的MYSQL版本为5.0.67rn之前是MSSQL的存储过程,今天刚接触MYSQL,死活调不通,还请大家指点。
MySql存储过程--游标中变量问题
例如:rn[code=SQL]rnDECLARE cur_0 CURSOR FOR SELECT * FROM User LIMIT offset_i,limit_i;rn[/code]rn其中offset_i和limit_i是存储过程的参数,保存存储过程不通过,换成具体常量可以通过,why?why?why?rn跪求分页游标的解决方案...
一个MYSQL存储过程中出现的问题
我是个菜鸟,接触数据库时间不长,现在在写一个MYSQL的存储过程,遇到两个其实很小的<em>问题</em>,可是我在网上到处都查不到相关的信息,还请各位大虾指点一下rn 1.select ID from test1 where ID=ID,在存储过程中我需要把查到的哪个ID存到一个变量A中,该怎么才能实现呢?rn 2.在存储过程中需要象外报一些错误信息,如何在存储过程中象外报错呢?rn 下面是一个很弱智的存储过程,可是里面的一几个<em>问题</em>我死活都想不明白rncreate procedure test()rnbeginrndeclare charge int;rnselect charge =ID from test1 where ID=1; //charge =ID赋值失败,该怎么才能把ID赋值给查charge呢?rnif(charge=1) thenrn向外报出查charge取值错误,这个我不知道该怎么实现rnend;rnrn刚学没多久,问的<em>问题</em>可能真的很傻,还请各位不吝指导。谢谢了
关于mysql存储过程中循环的问题
我要查询用户的1,2,3,4,5,6,7日留存。以前做出来了。但是需求改了,蛋有点疼,之前是查前几天,现在是要查今天登录的在以后的天数,所以涉及到修改。我这个循环为什么只是循环两遍?数据不对不对不对不对。。。。<em>问题</em>出在哪啊?? rn[code=sql]begin rndeclare i int; rndeclare numareaId int(10); rndeclare currentareaId int(10); rnSELECT COUNT(areaId),MIN(areaId) INTO @a,@b FROM option_area_info; rnrnSET numareaId=@a; rnSET currentareaId=@b; rnrnloop1:WHILE numareaId>0 DO rnSET @AID = currentareaId; rnrnSET i=1; rnwhile i=date_sub(curdate(),interval i day) and createTime=current_date() and loginTime=date_sub(curdate(),interval i day) and createTime=current_date() and loginTime=date_sub(curdate(),interval i day) and createTime=current_date() and loginTime=date_sub(curdate(),interval i day) and createTime=current_date() and loginTime=date_sub(curdate(),interval i day) and createTime=current_date() and loginTime=date_sub(curdate(),interval i day) and createTime=current_date() and loginTime=date_sub(curdate(),interval i day) and createTime=current_date() and loginTime=date_sub(curdate(),interval i day) and createTime
Golang MySQL存储过程的使用
Golang MySQL存储过程的<em>使用</em><em>使用</em>前阅读ref-1:<em>问题</em>来源 [支付系统数据库设计的关键<em>问题</em> ] ref-2:[Golang 用go-sql-driver 调用MySQL存储过程时的<em>问题</em>排查]编辑文件src/github.com/go-sql-driver/mysql/packets.go文件,在函数writeAuthPacket(cipher []byte) (大约在210行)的客户
MySQL存储过程之游标的使用
示例:把表中status为0所对应的age值改为99(当然有更简单的方法,这里主要是为了学习MySQL存储过程中游标的<em>使用</em>) 先建表如下: /* 在test库下建立testb表 */ CREATE TABLE `test`.`testb` ( `ID` int(11) NOT NULL, `NAME` varchar(255) CHARACTER SET utf8 COLLATE ...
MySQL存储过程的编写与使用
存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相
MySQL存储过程完整版使用代码示例
资源包中囊括了MySQL数据库中的存储过程的<em>使用</em>包含的基本结构及日常所<em>使用</em>到的基本函数的<em>使用</em>【包括java端调用存储过程,创建临时表,动态执行sql语句,过程的递归调用,指针循环取数,批量创建表删除表,树状结构的数据处理等】该资源下所有内容都是本人的日常软件开发经验总结,对于初学者<em>使用</em>MySQL存储过程的程序员具有重要参考价值,问大家要10分是不过分的,用过就知道了,欢迎大家下载参考及<em>使用</em>
MySQL存储过程和函数之流程控制的使用
本教程从基础的MySQL开始介绍,到SQLServer,然后Oracle,让学员能够从易到难,从Java或PHP语言到.Net数据库的灵活<em>使用</em>。其中分库介绍了,各个数据库的基本独立<em>使用</em>,以及各自的安装和配置。课程中主要是以SQL脚本为基础同时介绍非常实用性的脚本<em>使用</em>。例如:层次化查询,正则表达式以及技巧性函数等等。
perl $dbh->prepare()参数的问题
请问一下,我通过下面的语句获取oracle表的字段值,为什么运行的时候提示SQL语句不对?我直接在数据库下<em>使用</em>desc tablename都是正常的。rn[code=Perl]rn$dbh-><em>prepare</em>("desc tablename");rn[/code]rnrn另外有个<em>问题</em>也请教一下,如果我将tablenamee替换为?,然后执行的话,也总是报错,请问是怎么回事?rnrn[code=Perl]rn$dbh-><em>prepare</em>("select * from ?");rnforeach $table (@tablenames)rnrn $sth->execute($table);rn ...rnrn[/code]rnrn多谢!
Mysql存储过程使用总结
存储过程是MYSQL在5.0版本开始支持的,它一个被定义并保存在数据库服务器中的SQL语句集,是一种介于应用程序和数据库间的编程接口,也是封装重复性工作的一种有效方法,它支持用户变量、条件执行及其它的编程功能,具体如下: • 存储过程的用途 • 存储过程的语法 • 存储过程的<em>使用</em>
Mysql存储过程循环语句的使用案例
Mysql存储过程循环语句的<em>使用</em>案例业务描述业务数据代码示例 业务描述 <em>使用</em>Mysql存储过程去统计时间段内每个员工的奖励总和,并将统计的数据保存到员工奖励统计表。 业务数据 1.创建员工信息表–tb_employee DROP TABLE IF EXISTS `tb_employee`; CREATE TABLE `tb_employee` ( `emp_id` varchar(255) CH...
MySQL存储过程和触发器使用释疑
http://www.cnblogs.com/sunss/archive/2011/05/20/2051849.html
Mysql存储过程使用随机数
主要是<em>使用</em>RAND() ,例如   RAND()*100  表示(0~100)之间的随机 话不多说,直接上代码: DELIMITER ;; drop procedure if exists test_insert; create procedure test_insert() begin DECLARE i INT DEFAULT 1490544300; DECLARE v INT
mysql存储过程 游标使用
1.什么是游标需求:编写存储过程,<em>使用</em>游标,把uid为偶数的记录逐一更新用户名。delimiter $$ create procedure testf(IN my_userId varchar(32)) begin declare stopflag int default 0; declare my_uname varchar(32) default ''; declare uname...
mysql存储过程使用实例
<em>mysql存储过程</em>创建,参数(in,out,inout模式)<em>使用</em>,删除,变量的声明,赋值
使用MySql存储过程的几个疑惑
我现在做网站想用存储过程,但是不知道该怎么用。一方面,我在我的pc上写存储过程,将来移到服务器上是不是还得再重新写一遍?有没有比较好的导入方法呢?另外,我现在习惯用MySql Administrator处理数据库,请问可以用它来写存储过程吗,怎么写,有没有可参考的资料呢?
mysql存储过程基本使用
存储过程介绍 • 什么存储过程 – 数据库中保存的一系列 sql 命令的集合 – 编写存储过程时,可以<em>使用</em>变量、条件判断、流程控制等 – 存储过程,就是 MySQL 中的脚本   存储过程优点 • 存储过程优点   – 提高性能 – 可减轻网络负担      //编译执行 – 可以防止对表的直接访问 – 避免重复的 sql 操作   mysql 服务过程的脚本 变量 ...
jain sip 开发包(api文件和文档)下载
jain sip开发包,从sun网站下载来的,现在不太好找了 相关下载链接:[url=//download.csdn.net/download/h406559457/2335850?utm_source=bbsseo]//download.csdn.net/download/h406559457/2335850?utm_source=bbsseo[/url]
jsp留言本.rar下载
jsp留言本 一个简单的小案例 分享一下 相关下载链接:[url=//download.csdn.net/download/lx1607/5137855?utm_source=bbsseo]//download.csdn.net/download/lx1607/5137855?utm_source=bbsseo[/url]
DB2小波的分析下载
使用多贝西多分辨分析计算db2小波的小波函数和尺度函数 相关下载链接:[url=//download.csdn.net/download/u014083892/8310973?utm_source=bbsseo]//download.csdn.net/download/u014083892/8310973?utm_source=bbsseo[/url]
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数
我们是很有底线的