求助大神 ~mysql存储过程,表名写成动态的怎么实现

我写出来这样 执行不了,
DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE db_test.total(IN tablename VARCHAR(45),OUT stotal INT)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN

SELECT COUNT(1) INTO stotal FROM tablename GROUP BY product_id;
END$$

DELIMITER ;
执行:
CALL total('n_z_gift_2016_11_04',@stotal)
错误提示:
Table 'db_test.tablename' doesn't exist

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
#mysql mysql存储过程 表名作为变量的问题

大概意思是想要从TS_SCFZ表中的tabname字段来历遍所有表,从而查找是否有符合条件的记录 请大神帮帮忙 现在报错了 ``` drop procedure if exists deletecheck; delimiter // CREATE DEFINER = `root`@`%` PROCEDURE `deletecheck`(IN vahdm varchar(20)) BEGIN DECLARE done BOOLEAN DEFAULT FALSE; DECLARE vtable VARCHAR(24); DECLARE cur CURSOR FOR select tabname from TS_SCFZ where SFSC = 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; read_loop: LOOP FETCH cur INTO vtable; IF done THEN LEAVE read_loop; END IF; START TRANSACTION; set @sqlcmd = concat("select (1) from ",vtable," where ahdm = vahdm"); prepare stmt from @sqlcmd; IF EXISTS(execute stmt) THEN select concat('table is ',vtable); ELSE select concat(vtable,' is clean'); deallocate prepare stmt; END IF; COMMIT; END LOOP read_loop; CLOSE cur; END ``` drop procedure if exists deletecheck; delimiter // CREATE DEFINER = `root`@`%` PROCEDURE `deletecheck`(IN vahdm varchar(20)) BEGIN DECLARE done BOOLEAN DEFAULT FALSE; DECLARE vtable VARCHAR(24); DECLARE cur CURSOR FOR select tabname from TS_SCFZ where SFSC = 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; read_loop: LOOP FETCH cur INTO vtable; IF done THEN LEAVE read_loop; END IF; START TRANSACTION; set @sqlcmd = concat("select (1) from ",vtable," where ahdm = vahdm"); prepare stmt from @sqlcmd; IF EXISTS(execute stmt) THEN select concat('table is ',vtable); ELSE select concat(vtable,' is clean'); deallocate prepare stmt; END IF; COMMIT; END LOOP read_loop; CLOSE cur; END ``` [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'execute stmt) THEN select concat('table is ',vtable); ELSE sele' at line 16 ```

mysql在PrepareStatement中表名的动态表示为什么有时可以

开始的sql语句如下:INSERT table_? (column1,column2) VALUES(?,?), _使用DBUtils的batch()批量插入,用到PrepareStatement,异常信息Parameter index out of range (122 > number of parameters, which is 121),异常太多了就不贴出来了。 后来为了防止重复插入,使用了on duplicate key update: insert table_? (column1,column2) values(?,?) on duplicate key update column1=? 结果就正常了,批处理的执行速度要稍慢,不是稍慢,是很慢 请大神给个解释谢谢

mysql 动态拼接SQL语句求大神解答

DELIMITER $$ CREATE PROCEDURE bb_HL_sum_product3 ( IN name VARCHAR(200) ) begin drop TABLE tmp_reasult; declare cal1 varchar(800) ; set cal1=" insert into tmp_reasult(产品名称,募集规模,已募额度,杠杆率,成立时间) select product_name,project_money,PROJECT_ORDER_MONEY,extend8,setup_date from t_product where delete_flag=0 " if(name<>"" ) begin #产品名称 set SQL_FOR_SELECT= concat(SQL_FOR_SELECT," "," and product_name like ","'","%name%","'") end PRINT cal1 EXECUTE cal1; EXECUTE( 'update tmp_reasult set 客户总数=tmp.s1 ' +'from t_contract_order, ' +'(select count(distinct CUSTOMER_SEED) as s1,product_name from t_contract_order ' +'group by product_name )tmp where tmp_reasult.产品名称=tmp.product_name ' ) DEALLOCATE PREPARE cal1 ; END$$ DELIMITER ; 这是我写的存储过程,但是在Navicat里面报错,估计是关于定义变量,进行拼装语句的写法有错了。请大神帮忙看看

AndroidStudio运行报错,求助大神~~!

# 求解决啊~~~弄了一晚上了,找了各种帖子,各种方法都没有解决,求助大神~~! Internal Error. Please report to https://code.google.com/p/android/issues com.intellij.ide.plugins.PluginManager$StartupAbortedException: Fatal error initializing 'com.intellij.debugger.DebuggerManager' at com.intellij.ide.plugins.PluginManager.handleComponentError(PluginManager.java:256) at com.intellij.openapi.components.impl.PlatformComponentManagerImpl.handleInitComponentError(PlatformComponentManagerImpl.java:43) at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:540) at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponents(ComponentManagerImpl.java:123) at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:107) at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:90) at com.intellij.openapi.project.impl.ProjectImpl.init(ProjectImpl.java:282) at com.intellij.openapi.project.impl.ProjectManagerImpl.initProject(ProjectManagerImpl.java:231) at com.intellij.openapi.project.impl.ProjectManagerImpl.access$300(ProjectManagerImpl.java:68) at com.intellij.openapi.project.impl.ProjectManagerImpl$3.run(ProjectManagerImpl.java:311) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:446) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:392) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54) at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:170) at com.intellij.openapi.project.impl.ProjectManagerImpl.getDefaultProject(ProjectManagerImpl.java:306) at com.android.tools.idea.sdk.IdeSdks.getAndroidSdkPath(IdeSdks.java:90) at com.android.tools.idea.startup.GradleSpecificInitializer.setupSdks(GradleSpecificInitializer.java:282) at com.android.tools.idea.startup.GradleSpecificInitializer.run(GradleSpecificInitializer.java:114) at com.android.tools.idea.AndroidInitialConfigurator.activateAndroidStudioInitializerExtensions(AndroidInitialConfigurator.java:198) at com.android.tools.idea.AndroidInitialConfigurator.<init>(AndroidInitialConfigurator.java:65) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.picocontainer.defaults.InstantiatingComponentAdapter.newInstance(InstantiatingComponentAdapter.java:193) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter$1.run(ConstructorInjectionComponentAdapter.java:220) at org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248) at com.intellij.util.pico.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:59) at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:499) at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponents(ComponentManagerImpl.java:123) at com.intellij.openapi.application.impl.ApplicationImpl.access$801(ApplicationImpl.java:92) at com.intellij.openapi.application.impl.ApplicationImpl$12.run(ApplicationImpl.java:500) at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:142) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:446) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:392) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:127) at com.intellij.openapi.application.impl.ApplicationImpl.createComponents(ApplicationImpl.java:516) at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:107) at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:458) at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:450) at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:197) at com.intellij.idea.MainImpl$1$1$1.run(MainImpl.java:52) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:366) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.NoClassDefFoundError: com/sun/jdi/Value at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.sun.proxy.$Proxy47.<clinit>(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.reflect.Proxy.newProxyInstance(Unknown Source) at com.intellij.util.EventDispatcher.<init>(EventDispatcher.java:75) at com.intellij.util.EventDispatcher.create(EventDispatcher.java:42) at com.intellij.debugger.impl.DebuggerStateManager.<init>(DebuggerStateManager.java:29) at com.intellij.debugger.impl.DebuggerManagerImpl$MyDebuggerStateManager.<init>(DebuggerManagerImpl.java:606) at com.intellij.debugger.impl.DebuggerManagerImpl$MyDebuggerStateManager.<init>(DebuggerManagerImpl.java:606) at com.intellij.debugger.impl.DebuggerManagerImpl.<init>(DebuggerManagerImpl.java:81) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.picocontainer.defaults.InstantiatingComponentAdapter.newInstance(InstantiatingComponentAdapter.java:193) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter$1.run(ConstructorInjectionComponentAdapter.java:220) at org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248) at com.intellij.util.pico.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:59) at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:499) ... 56 more Caused by: java.lang.ClassNotFoundException: com.sun.jdi.Value at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:207) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 80 more

EF和mysql做关系映射,表名全部小写了,怎么解决?

我的项目已经用EF映射过一次mysql 了,表名和数据库名称大小写是一致的。 然后我现在“从数据库更新模型”,发现映射过来的表名全部小写了。不知道怎么回事? 求大神赐教!

MySQL存储过程循环问题

DELIMITER $$ CREATE PROCEDURE insert_pro(IN usidS VARCHAR(50),IN usidE VARCHAR(50),IN uutype INT(11),IN uulevel INT(11)) BEGIN DECLARE $existsFlag INT DEFAULT 0; DECLARE usid INT(50); //判断同种type和level的记录是否存在 SELECT id INTO $existsFlag FROM zy WHERE utype=uutype AND ulevel=uulevel; IF $existsFlag = 0 THEN //判断其实序号在数据库中是否已存在 SELECT id INTO $existsFlag FROM zy WHERE sid>=usidS+0 AND sid<=usidE+0; IF $existsFlag = 0 SET usid=(usidS+0); //如果都不存在,则以起止序号为sid,循环插入相同level相同type记录若干 WHILE usid<=(usidE+0) DO INSERT INTO zy(sid,utype,ulevel) VALUES(usid+'',uutype,uulevel); END IF; SET usid=(usid+1); END WHILE; END $$ 目前一直在‘SET usid=(usidS+0);’附近报错,不知是何原因,求大神指点

mysql存储过程循环只执行一次

下面是存储过程主体,问题是无论怎么跑,貌似里面的两个循环都只会执行一次。好困惑。请sql大神解救 BEGIN DECLARE stop_flag INT DEFAULT 0; DECLARE captain VARCHAR(500); DECLARE captain1 VARCHAR(500); DECLARE captain2 VARCHAR(500); declare captainstaffno1 varchar(32); declare captainstaffno2 varchar(32); declare crwPilotInf varchar(500); DECLARE leftSeat VARCHAR(200); DECLARE rightSeat VARCHAR(200); DECLARE controller VARCHAR(200); DECLARE ti_code varchar(32); declare flightNo VARCHAR(32); DECLARE flightDate datetime; declare to_airport varchar(32); declare ld_airport varchar(32); declare observers varchar(500) DEFAULT ''; declare observerIds varchar(500) default ''; declare observerText varchar(500); declare observerNames varchar(100); declare observerId varchar(100); DECLARE leftSeat_SID VARCHAR(200); DECLARE rightSeat_SID VARCHAR(200); DECLARE controller_SID VARCHAR(200); #定义游标 DECLARE cur1 CURSOR FOR select tiCode, FLIGHT_NO, datop, tiAirDromeBegin, tiAirDromeEnd, tiLeftSeat, tiRightSeat, tiControl from ODS.T_FLIGHT_SEGMENTS_REPORT WHERE datop between '2014-02-01' and '2014-02-28'; DECLARE CONTINUE HANDLER FOR NOT FOUND SET stop_flag=1; ​ open cur1; WHILE stop_flag = 0 DO FETCH cur1 INTO ti_code,flightNo,flightDate,to_airport, ld_airport,leftSeat,rightSeat,controller; SET @sqlexec:=concat('select CRWPILOTINF,CAPTAIN1,CAPTAINSTAFFNO1,CAPTAIN2,CAPTAINSTAFFNO2 into @crwPilotInf, @captain1, @captainstaffno1, @captain2, @captainstaffno2 from ODS.T_FLIGHT_REPORT_SPL where FLTIDS=\'',flightNo,'\' and DATE_FORMAT(FLTDATE,\'%Y-%m-%d\')=\'',flightDate,'\' and TO_AIRPORT=\'',to_airport,'\' and LD_AIRPORT=\'',ld_airport,'\';'); prepare stmt from @sqlexec ; execute stmt; deallocate prepare stmt ; set crwPilotInf = @crwPilotInf; set captain1 = @captain1; set captainstaffno1 = @captainstaffno1; set captain2 = @captain2; set captainstaffno2 = @captainstaffno2; SET @i = 1; SET @count=CHAR_LENGTH(crwPilotInf)-CHAR_LENGTH(REPLACE(crwPilotInf,';','')) + 1; IF IFNULL(@count,0) > 0 THEN WHILE @i <= @count DO set observerText = SUBSTRING_INDEX(SUBSTRING_INDEX(crwPilotInf,';',@i),';',-1); set observerNames = SUBSTRING_INDEX(SUBSTRING_INDEX(observerText,':',1),':',-1); set observerId = SUBSTRING_INDEX(SUBSTRING_INDEX(observerText,'+',2),'+',-1); select @i,observerText,observerNames,observerId; if (observerText REGEXP captain1) > 0 then select (observerText REGEXP captain1); ELSEIF (observerText REGEXP captain2) > 0 then select (observerText REGEXP captain2); ELSEIF (observerText REGEXP leftSeat) > 0 then update ODS.T_FLIGHT_SEGMENTS_REPORT a INNER JOIN STG.IF_TASKINFOAIRCREWS_TMP b on a.tiCode=b.TICODE set a.LEFTSEAT_PILOT_ID=b.SID where b.TICODE=ti_code and b.MNAME=leftSeat; ELSEIF (observerText REGEXP rightSeat) > 0 then update ODS.T_FLIGHT_SEGMENTS_REPORT a INNER JOIN STG.IF_TASKINFOAIRCREWS_TMP b on a.tiCode=b.TICODE set a.RIGHTSEAT_PILOT_ID=b.SID where b.TICODE=ti_code and b.MNAME=rightSeat; ELSEIF (observerText REGEXP controller) > 0 then update ODS.T_FLIGHT_SEGMENTS_REPORT a INNER JOIN STG.IF_TASKINFOAIRCREWS_TMP b on a.tiCode=b.TICODE set a.CONTROL_PILOT_ID=b.SID where b.TICODE=ti_code and b.MNAME=controller; ELSE SET observers = concat(observers, observerNames,','); SET observerIds = concat(observerIds, observerId,','); END IF; SET @i=@i+1; END WHILE; END IF; UPDATE ODS.T_FLIGHT_SEGMENTS_REPORT SET OBSERVER_PILOT_ID=observerIds, OBSERVER_NAME=observers where FLIGHT_NO=flightNo and datop=flightDate and tiAirDromeBegin=to_airport and tiAirDromeEnd = ld_airport; SET observers=''; SET observerIds=''; COMMIT; END WHILE; CLOSE cur1; END 麻烦大神们都帮忙看看,问题出在哪里。怎么解决? ps:没有c币了。各位慷慨一下

mysql 存储过程输出参数中文返回乱码

我用C++ 通过ODBC访问mysql 数据库,mysql 数据库版本是5.6.12 odbc驱动版本5.2.5 数据库的字符集全部设置为utf8, 驱动的字符集也设置为utf8. 程序中通过select直接从表中查出,中文不会乱码, 但通过存储过程的输出参数返回就是乱码。 求大神们帮忙。谢谢

mysql中用EVENT事件定时改变表名,怎样避免在改表名的时候表被selcet,insert等操作锁表

数据库里有张名为data的表,每隔一段时间(几十秒钟)批量写入一次数据,等到晚上0点的时候通过mysql中的事件将data表名改为data201908xx(就是将每天的日期加上去),同时再建一张data表。目前想到几个问题,如下 1、如何避免在修改表名的时候,表被其他操作锁住,如这个时候正在批量写入数据; 2、从修改表名到新建data表,这段时间data表在数据库中不存在,怎样确保写数据时有表存在 希望大神能帮忙解答一下

求助求助~求助大神,我的电脑每次开机都是这样。

为什么我的电脑每次看机都是这样,虽然可以正常进入程序,但是每次都是这样 好麻烦,想问一下大神有什么好的解决办法吗?我的电脑是戴尔的,之前是Win10的系统,之后装上Win7之后出现的这种情况。![图片说明](https://img-ask.csdn.net/upload/201602/02/1454386433_775614.jpg)

用C#调用mysql数据库,combox显示数据库的所有表名,选择其中一个表名, datagridview显示表的数据。需要详细代码,有没有大神指导一下

combox显示数据库的所有表名,选择其中一个表名, datagridview显示表的数据。需要详细代码,有没有大神指导一下

求助大神,MySQL引擎innodb修改失败;

![![图片说明](https://img-ask.csdn.net/upload/201511/15/1447569184_208239.png)图片说明](https://img-ask.csdn.net/upload/201511/15/1447569162_160972.png)

存储过程进行排序,求大神解决Bug

alter procedure usp_StudentInfoDataByPage @pageIndex int=1,--当前页 @pageSize int=5,--页面显示数据数 @Count int output,--数据总条数 @action varchar(20)--排序字段 as begin with t as( select *,Row_number() over(order by gKey) as Id from StudentScore) ---------查询数据记录------------ select t.gKey, gStudentKey, sName, iSubjects, dScore, iSemester from t join StudentInfo on t.gStudentKey=StudentInfo.gKey where t.Id between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize order by case when @action='gStudentKey' then gStudentKey when @action='iSubjects' then iSubjects when @action='iSemester' then iSemester else t.gKey --cast(t.gKey as int) end ---------查询数据记录总条数------------ set @Count= (Select Count(*) from StudentScore) end ![图片说明](https://img-ask.csdn.net/upload/201708/29/1503977824_621333.png)

关于mysql存储过程的更新语句问题

BEGIN /* accid --普通账户id- '58b0495500ec58092' money!--充值金额- '10' cardid--卡id- '000005' ad_seri--序列号- '43b1515500031af023' ad_seris--序列号- null u_id--用户id- 'userId2' idg--用户活动关系表id null accids --活动账户id null integ--赠送积分! null pre_num!--赠送多少钱 null trans_code--交易码 '000015' cmp_id--商户id '001' inter_sert--接口流水号 'JKLSH' act_id -- 活动id null adcsub--借方id '823' addsub--贷方id '999' userId--柜员号 out '466d6d55009aa0041','10','100121','e3d28355001d8d00','e3d28355001d8d01','王五',null,null,'1.000','0','000011','001','',null,'823','999','test05' */ declare accbla decimal; declare accblaf decimal; declare accod decimal; declare money decimal(15,3); declare integ decimal(15,3) default 0; declare pre_num decimal(15,3) default 0; declare schid varchar(20); declare schna varchar(100); declare abC varchar(6);#卡类型ab账 declare abA varchar(6);#账户类型ab账 declare ab varchar(6);#新的ab账 #declare result varchar(1) default '0';#只用于测试 #如果出现sql异常,则将t_error设置为1后继续执行后面的操作 declare continue handler for sqlexception set result="1"; #设置事务顺序执行 #SET transaction isolation level SERIALIZABLE; #手动启动事务,即不自动commit START TRANSACTION; set money = CAST(moneyS AS decimal(15,3)); select QZT into abC from sdw_ref_usr_card sruc,sdw_bus_cardtype sbc where CARD_ID=cardId and sruc.CARD_TYPE=sbc.CARD_TYPE; select sss.SCH_ID,sss.SCH_NA into schid,schna from sdw_ref_sch_cmp srsc,sdw_sys_schinfo sss where srsc.CMP_ID=cmp_id and sss.SCH_ID=srsc.SCH_ID; #select ACC_BLA,ACC_OD into accbla,accod from sdw_bus_account where ACC_ID=accid; select a.ACC_BLA,a.ACC_OD,b.SPEC into accbla,accod,abA from sdw_bus_account a,sdw_bus_acctype b where a.ACC_TYPE = b.ACC_TYPE and a.ACC_ID=accid; #更新普通账户余额 update sdw_bus_account set ACC_BLA=ACC_BLA+money,REC_NUM=REC_NUM+1 where ACC_ID=accid; #判断透支停卡用户的余额 if accod+accbla+money>0 then #更新所有卡状态为启用 update sdw_ref_usr_card set U_ST='sys01' where U_ID=u_id and U_ST='sys06'; end if; if integS is not null then set integ = CAST(integS AS decimal(15,3)); select integ; #更新积分信息表 update sdw_bus_inteinfo set INTE=INTE+integ,TOTAL_TOPUP=TOTAL_TOPUP+money,TOPUP=TOPUP+integ where U_ID=u_id; select result; end if; #确定ab账 if abA='qztb' or abC='qztb' THEN set ab = 'qztb'; else set ab = 'qzta'; end if; #临时流水表 insert into sdw_tmp_sch_traninfo (ACC_ID,CARD_ID,U_STAT,DJ_MARK,B_ANCT,AD_ANCT,E_ANCT,SA_ACCTP,AD_BUSINESS,AD_ACBK, AD_TELL,AD_AUTHN,AD_SERI,AD_ST,TRANS_CODE,TRTP_ID,AD_DATE,AD_ZD,AD_CSUB,AD_CMON, AD_DSUB,AD_DMON,P_ACC,AD_POST,AD_REC,AD_WRITROFF,KVAL,SE_NOTE,GOU_STATE,INTER_SERI, SCH_ID,SCH_NA,MCT_ID,MC_ID,PRO_ID,NUM,UNIT_P,AB,DJJ,DJJ_ID,INTE,SZ) values(accid,cardid,'ust01','decr01',accbla,money,accbla+money,'acct01',cmp_id,cmp_id, userId,null,ad_seri,'trst02',trans_code,'trt01',NOW(),null,adcsub,money, addsub,money,null,'sys00','sys00','sys00',null,null,'ust02',inter_sert, schid,schna,null,null,null,null,null,ab,null,null,integ,FLOOR(RAND()*10)); if accids is not null then if pre_numS is not null and pre_numS <> '0' then set pre_num = CAST(pre_numS AS decimal(15,3)); #select ACC_BLA into accblaf from sdw_bus_account where ACC_ID=accids; select a.ACC_BLA,b.SPEC into accblaf,abA from sdw_bus_account a,sdw_bus_acctype b where a.ACC_TYPE = b.ACC_TYPE and a.ACC_ID=accids; #更新活动送账户余额 update sdw_bus_account set ACC_BLA=ACC_BLA+pre_num,REC_NUM=REC_NUM+1 where ACC_ID=accids; #确定ab账 if abA='qztb' or abC='qztb' THEN set ab = 'qztb'; else set ab = 'qzta'; end if; #临时流水表 insert into sdw_tmp_sch_traninfo (ACC_ID,CARD_ID,U_STAT,DJ_MARK,B_ANCT,AD_ANCT,E_ANCT,SA_ACCTP,AD_BUSINESS,AD_ACBK,AD_TELL,AD_AUTHN,AD_SERI,AD_ST,TRANS_CODE,TRTP_ID,AD_DATE,AD_ZD,AD_CSUB, AD_CMON,AD_DSUB,AD_DMON,P_ACC,AD_POST,AD_REC,AD_WRITROFF,KVAL,SE_NOTE,GOU_STATE,INTER_SERI,SCH_ID,SCH_NA,MCT_ID,MC_ID,PRO_ID,NUM,UNIT_P,AB,DJJ,DJJ_ID,INTE,SZ) values(accids,cardid,'ust01','decr01',accblaf,pre_num,accblaf+pre_num,'acct02',cmp_id,cmp_id, userId,null,ad_seris,'trst02',trans_code,'trt01',NOW(),null,adcsub,pre_num, addsub,pre_num,null,'sys00','sys00','sys00',null,null,'ust02',inter_sert, schid,schna,null,null,null,null,null,ab,null,null,null,FLOOR(RAND()*10)); end if; end if; if act_id is not null then insert into sdw_ref_u_act(ACT_ID,U_ID,S_TIME,IDGEN) values(act_id,u_id,now(),idg); update sdw_bus_act set J_NUM=J_NUM+1 where ACT_ID=act_id; end if; if result <> "0" then set result = "1"; ROLLBACK; ELSE set result='0'; COMMIT; END IF; END 以上是我的存储过程,在"更新积分信息表"位置出现问题:条件不好使,全量更新表,而不是符合条件的记录。存储过程能执行。 请各位大神帮小弟看看 是不是更新语句有问题?还是其他问题?跪谢

MySQL的存储过程declare语句报错

``` CREATE PROCEDURE curdemo() begin declare var_id varchar(32); declare var_number varchar(32); DECLARE var_model VARCHAR(32); declare rs cursor for select id,number from t_device_lending; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1; open rs; fetch next from rs into var_id,var_number; REPEAT IF NOT Done THEN select model_number into var_model from t_device_info where number = var_number; update t_device_lending_copy set model_number = var_model where id = var_id; END IF; FETCH NEXT FROM rs INTO id,number; UNTIL Done END REPEAT; /* 关闭游标 */ CLOSE rs; end ``` 报的错是“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare var_id varchar(32)' at line 3” 我对了一下5.7.10的官方手册。declare的语法应该是正确的,怎么会报这种错?求大神解释。

C#连接mysql然后查询存储过程

C#连接mysql 然后查询一个名为userinfo的存储过程,传参5 sql:call userinfo(5); 这个是查询用户的信息的存储过程,执行这个sql,然后获得查询出来的结果,并且输出。 有没有大神写个demo我学习一下,谢谢! //正常执行sql语句我会,不会查存储过程

oracle将sql语句写成存储过程

想要把原sql语句写成存储过程,这样以后就直接调用存储过程来执行这一段语句了 求大神帮忙看看我写的是否正确,谢谢 原sql语句: TRUNCATE TABLE tab1; INSERT tab1 SELECT s.storecode,s.category,nvl(curr.vol,0)/s.avg_vol - 1 AS growth FROM ( SELECT periodcode,storecode,CATEGORY,vol FROM tab2 WHERE periodcode = &periodcode) curr, (SELECT storecode,category,AVG(vol) avg_vol FROM tab2 GROUP BY storecode,CATEGORY HAVING AVG(vol) > 0) s WHERE curr.storecode(+) = aveg.storecode AND curr.category(+) = s.category 打包为存储过程: create or replace procedure p_tab1 AS BEGIN TRUNCATE TABLE tab1; INSERT tab1 SELECT s.storecode,s.category,nvl(curr.vol,0)/s.avg_vol - 1 AS growth FROM ( SELECT periodcode,storecode,CATEGORY,vol FROM tab2 WHERE periodcode = &periodcode) curr, (SELECT storecode,category,AVG(vol) avg_vol FROM tab2 GROUP BY storecode,CATEGORY HAVING AVG(vol) > 0) s WHERE curr.storecode(+) = aveg.storecode AND curr.category(+) = s.category COMMIT; END;

mysql递归,mysql存储过程

![图片说明](https://img-ask.csdn.net/upload/201503/10/1425978631_754558.png) friend表里面有uid和friendid代表谁和谁是好友关系 如果1要和4认识 可以通过1>2>3>4 和1>5>4 现在要写一个存储过程找出这2条路径 ,求大神解答

求助MySQL的关于sql语句怎么写??三表的查询~~~请大神进来帮忙~~~~~

现在我有三个表: 表1: pre_common_member_profile: uid(用户的uid), gender(性别), birthyear(出生的年), birthmonth(出生的月), birthday(出生的日) 表2: pre_home_friend: uid(用户的uid), fuid(加为好友的uid) 表3: pre_home_friend_request: fuid(发送好友请求的人), uid(发送给谁) 要求: 查找表1,但是排除一定条件。 查询表1上面的五个字段,条件为uid=570并且uid不能等于(这两个条件:1、表2中uid=570的fuid的值。2、表3中的fuid=570的uid值。) 请尽量写出的语句效率高一点。

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

C++11:一些微小的变化(新的数据类型、template表达式内的空格、nullptr、std::nullptr_t)

本文介绍一些C++的两个新特性,它们虽然微小,但对你的编程十分重要 一、Template表达式内的空格 C++11标准之前建议在“在两个template表达式的闭符之间放一个空格”的要求已经过时了 例如: vector&lt;list&lt;int&gt; &gt;; //C++11之前 vector&lt;list&lt;int&gt;&gt;; //C++11 二、nullptr ...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

【阿里P6面经】二本,curd两年,疯狂复习,拿下阿里offer

二本的读者,在老东家不断学习,最后逆袭

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!...

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)格子衬衫、常掉发、双肩包、修电脑、加班多……这些似乎成了大众给程序员的固定标签。近几年流行的“跨界风”开始刷新人们对程序员的...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐