Mysql游标问题?
我编写了一个存储过程,它将从一个表中传出记录,并使用insert语句将它们插入到2-3个不同的表中.
问题是我正在检查table1中是否存在记录然后我将temptable中的记录顺序插入table1,table2,但条件有一些问题我不知道它总是进入其他部分.
代码示例如下:
CREATE PROCEDURE `insertData`(In clientNo INT,In usedID INT)
BEGIN
declare mame varchar(100);
declare address varchar(100);
declare city varchar(50);
declare IdentityNO1 varchar(20)
declare cur1 cursor for select * from temptable;
declare continue handler for not found set done=1;
SET @clientNo = clientNO;
SET @userID = userID;
set done = 0;
open cur1;
igmLoop: loop
fetch cur1 into Name,Address,City,IdentityNO1,clientNo;
if done = 1 then leave igmLoop; end if;
//If no record exists in some records table1,table2.
IF ( (SELECT …Run Code Online (Sandbox Code Playgroud) 我有一张桌子avl_pool,我有一个功能,可以在地图上找到离该(x, y)位置最近的链接.
该选择的性能非常线性,该功能需要~8 ms才能执行.因此,计算此行选择1000行需要8秒.或者,正如我在此示例中所示,20.000行需要162秒.
SELECT avl_id, x, y, azimuth, map.get_near_link(X, Y, AZIMUTH)
FROM avl_db.avl_pool
WHERE avl_id between 1 AND 20000
"Index Scan using avl_pool_pkey on avl_pool (cost=0.43..11524.76 rows=19143 width=28) (actual time=8.793..162805.384 rows=20000 loops=1)"
" Index Cond: ((avl_id >= 1) AND (avl_id <= 20000))"
" Buffers: shared hit=19879838"
"Planning time: 0.328 ms"
"Execution time: 162812.113 ms"
Run Code Online (Sandbox Code Playgroud)
使用pgAdmin我发现如果同时在分离的窗口上执行一半的范围,执行时间实际上被分成两半.所以看起来服务器可以毫无问题地处理对同一个表/函数的多个请求.
-- windows 1
SELECT avl_id, x, y, azimuth, map.get_near_link(X, Y, AZIMUTH)
FROM avl_db.avl_pool
WHERE avl_id between 1 AND 10000
Total …Run Code Online (Sandbox Code Playgroud) 如何在插入MySQL之前尝试创建触发器时抛出错误,以便为每个输入生成新的UUID.
CREATE TRIGGER insert_guid
BEFORE INSERT ON guid_tool (FOR EACH ROW
BEGIN
SET NEW.guid_key = UUID());
END;
Run Code Online (Sandbox Code Playgroud)
这是我的桌子
create table guid_tool (
ID INT NOT NULL AUTO_INCREMENT,
guid_key CHAR(40) NOT NULL,
PRIMARY KEY(ID)
) CHARSET=LATIN1;
Run Code Online (Sandbox Code Playgroud)
我一定做错了什么.
我有一个全新的Eclipse IDE for Java EE Developers安装 - 适用于WIndows 64bit - 版本:Neon.2发行版(4.6.2)
我已经下载了最新版本的GlassFish服务器4.1.1 -
我安装了Full&Web Profie 使用Eclipse Marketplace的最新GlassFish收费:https:
//marketplace.eclipse.org/content/glassfish-tools
现在我尝试使用最新的JDK 8将GlassFish Server添加到Eclipse,但它抱怨需要Java 6或7:
好的,那我试图使用最新的JDK 7而不是8,但这次它抱怨这是一个无效的GlassFish安装.
如何将GlassFish服务器添加到Eclipse中,我做错了什么?
嗨,我有一个表'ABC',主键'ID',表XYZ中的外键为'ID'.
我试图从ABC中删除,具体取决于ID!='A'或ID!='A2'的条件.我有两个问题.
DELETE FROM ABC WHERE ID NOT IN ('A','A2')
和
delete from ABC where ID !='A' or ID !='A2'
我假设两者在逻辑上是相同的和正确的.但是我在使用'OR'条件的第二个中获得XYZ表的完整性错误.
有人可以帮忙,告诉它为什么会发生.
编辑::抱歉这是错误的
我有以下sql查询
select * from MY_TABLE
MY_COL >= to_timestamp_tz('08-03-17 07:25:00.0000 EST', 'dd-mm-yy hh24:mi:ss.ff TZR') and
MY_COL <= to_timestamp_tz('08-03-17 09:08:00.0000 EST', 'dd-mm-yy hh24:mi:ss.ff TZR')
Run Code Online (Sandbox Code Playgroud)
至少有以下2个条目(如sql developer中所示).
03-AUG-17 07.25.51.576000000 AM AMERICA/NEW_YORK
03-AUG-17 07.31.33.553000000 AM AMERICA/NEW_YORK
Run Code Online (Sandbox Code Playgroud)
我的查询不返回任何条目.我希望能够获得这两个条目.我有什么明显的遗失吗?
谢谢
我是春天世界的新人。我有一个问题,从 oracle 包调用过程并将 CURSOR 返回到 Spring 的更好方法是什么?
我可以像在经典java中一样使用“Callable Statement”来做到这一点,但我认为还有更好、更简洁的方法,怎么做呢?
例如,
a) 我们有一个简单的表 PEOPLE_TAB,其中有:
姓名:NEO,玛丽 姓氏:ANDERSON, Smith 性别:男,工资:20, 25 滚动:测试,测试
b) 此外,我们还有一个包含程序的 HOME_TEST_PKG 包
过程 show_people_data( i_name IN VARCHAR2, o_resp_set OUT SYS_REFCURSOR)
是
开始
dbms_output.put_line('你好1');
OPEN o_resp_set FOR 从 name=i_name 的人中选择姓名、性别、年龄、姓名;
dbms_output.put_line('你好2');
其他人则例外
Run Code Online (Sandbox Code Playgroud)dbms_output.put_line('Hello 3'); OPEN o_resp_set FOR SELECT 'something wrong' as error from dual;END show_people_data;
c) 然后,我们有一个在 Spring 中运行的示例 java 代码:
@RequestMapping(value = "/DBtest")
@ResponseBody
public Map DBtest() throws SQLException {
private String PROCEDURE_NAME = "{call test.home_test_pkg.show_people_data(?,?)}";
JSONObject answer …Run Code Online (Sandbox Code Playgroud) 在Oracle 11g中,我有一个表,命名ITEM,其中每个记录被归类到maingroup与subgroup如下:
+-------+---------+----------+
item_id maingroup subgroup
+-------+---------+---------+
1 group1 subgroup1
2 group1 subgroup2
3 group2 subgroup1
4 group2 subgroup2
...
Run Code Online (Sandbox Code Playgroud)
我必须编写一个程序来报告表中的项目数ITEM.报告输出将类似于:
subgroup1 subgroup2 group_total
group1 10 5 15
group2 0 1 1
subgroup_total 10 6 16
Run Code Online (Sandbox Code Playgroud)
为此,我将编写一个SQL来查询数据,然后使用Java重新格式化输出.SQL应该自己生成完整的报告,即我将仅使用Java重新格式化输出而不进行任何计算.所以,我决定SQL的输出应该是这样的:
+--------------+-----------+-----+
maingroup subgroup cnt
+--------------+-----------+-----+
group1 subgroup1 10
group1 subgroup2 5
group1 group_total 15
group2 subgroup1 0
group2 subgroup2 1
group2 group_total 1
subgroup_total subgroup1 10
subgroup_total subgroup2 6
subgroup_total group_total 16
Run Code Online (Sandbox Code Playgroud)
理想情况下,SQL就像这样简单
select maingroup, …Run Code Online (Sandbox Code Playgroud) 我在Oracle数据库中有下表
src_tbl
id from_date thru_date
------------------------------
1 01-JAN-2015 31-oct-2016
2 01-APR-2016 31-DEC-2015
3 01-JUL-2014 31-DEC-2016
Run Code Online (Sandbox Code Playgroud)
我想将src_tbl中的行插入到目标表中,并在from_date和thru_date之间为每个月创建一行,如下所示:
tgt_tbl
--------------------------
id month
1 JAN-2015
1 FEB-2015
1 MAR-2015
...
...
2 APR-2016
2 MAY-2016
2 JUN-2016
...
...
3 JUL-2014
3 AUG-2014
3 SEP-2014
3 OCT-2014
...
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.
oracle ×5
sql ×3
mysql ×2
c# ×1
cursor ×1
eclipse ×1
glassfish ×1
glassfish-4 ×1
java ×1
performance ×1
postgresql ×1
spring ×1
spring-boot ×1
timestamp ×1
to-timestamp ×1