小编kro*_*lko的帖子

Mysql使用游标存储过程

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)

mysql stored-procedures cursor

9
推荐指数
1
解决办法
7万
查看次数

我可以在多个查询中拆分查询或创建并行性来加速查询吗?

我有一张桌子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)

c# sql postgresql performance multithreading

9
推荐指数
1
解决办法
583
查看次数

在mysql中创建触发器以生成UUID

如何在插入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)

我一定做错了什么.

mysql

6
推荐指数
2
解决办法
6992
查看次数

如何在Eclipse Neon 2中添加GlassFish 4.1服务器?

我有一个全新的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中,我做错了什么?

eclipse glassfish glassfish-4

6
推荐指数
1
解决办法
6801
查看次数

Oracle中的OR或IN条件为负

嗨,我有一个表'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表的完整性错误.

有人可以帮忙,告诉它为什么会发生.

编辑::抱歉这是错误的

oracle

2
推荐指数
1
解决办法
75
查看次数

带有where子句问题的Oracle时间戳记

我有以下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)

我的查询不返回任何条目.我希望能够获得这两个条目.我有什么明显的遗失吗?

谢谢

sql oracle timestamp to-timestamp

2
推荐指数
1
解决办法
622
查看次数

Springboot java oracle过程用游标调用

我是春天世界的新人。我有一个问题,从 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');

其他人则例外

dbms_output.put_line('Hello  3');

OPEN o_resp_set FOR SELECT 'something wrong' as error from dual;
Run Code Online (Sandbox Code Playgroud)

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)

java oracle spring stored-procedures spring-boot

2
推荐指数
1
解决办法
2万
查看次数

不使用Oracle数据库中的临时表或WITH子句重用子查询

在Oracle 11g中,我有一个表,命名ITEM,其中每个记录被归类到maingroupsubgroup如下:

+-------+---------+----------+
 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)

sql oracle

1
推荐指数
1
解决办法
523
查看次数

如何在Oracle中从单行插入多行

我在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

1
推荐指数
1
解决办法
181
查看次数