db2本机SQL存储过程

2nbm6dog  于 4个月前  发布在  DB2
关注(0)|答案(1)|浏览(73)

我正在学习和新的db2。
以下是我正在努力实现的步骤:

*第一步:创建一个存储过程,将数据插入表中,插入后
*步骤2:在同一个表上运行select,获取值并粘贴到屏幕/输出上。

第1步完成并能够将数据插入到表中。现在我需要帮助执行select语句并打印结果..我正在尝试将此select语句放在插入后的同一存储过程中。

  • 执行存储过程
  • 插入表中
  • 等待1秒
  • 从它插入的同一个表中选择数据。
  • (有点逻辑)这里

查询:

select  
    columna, columnb, columnc 
from 
    table A 
when 
    columnd <> null, 

if columnd is null then 
    select the columna, columnb, columnc 
    from table A 
    where max(columne)

字符串
这里columndcolumne都是timestamp列,需要表中的最新行。
就像在这两种情况下只取前1行一样。
选择结果后,存储过程完成后,columna, columnb, columnc应作为输出打印。
TIA...
我尝试了下面这样的东西:
把整个第二步放在第二个存储过程中,并在主插入存储过程中调用存储过程。但是我在逻辑上失败了。正如我所说的-我还在学习...

CREATE PROCEDURE test()
LANGUAGE SQL
BEGIN 
        DECLARE V_COLUMNA VARCHAR(255);

DECLARE V_COLUMNB VARCHAR(255);

DECLARE V_COLUMNC VARCHAR(255);

DECLARE V_COLUMND VARCHAR(255);

DECLARE V_COLUMNE VARCHAR(255);

IF (
SELECT
    COUNT(*)
FROM
    tableA pl
WHERE
    columnd IS NULL) > 0 THEN 
        
            SELECT
    columna,
    columnb,
    columnc,
    columne
            INTO
    V_COLUMNA,
    V_COLUMNB,
    V_COLUMN,
    V_COLUMNE
FROM
    tableA
ORDER BY
    TIMESTAMP DESC 
            FETCH FIRST 1 ROW ONLY;
ELSE 
        
            SELECT
    columna,
    columnb,
    columnc,
    columnd
            INTO
    V_COLUMNA,
    V_COLUMNB,
    V_COLUMN,
    V_COLUMND
FROM
    tableA
ORDER BY
    TIMESTAMP DESC 
            FETCH FIRST 1 ROW ONLY;
END IF;

IF V_COLUMND IS NOT NULL THEN
SELECT
    V_COLUMNA,
    V_COLUMNB,
    V_COLUMN,
    V_COLUMND;
END IF;

IF V_COLUMND IS NULL THEN
SELECT
    V_COLUMNA,
    V_COLUMNB,
    V_COLUMN,
    V_COLUMNE;
END IF;
END;

fquxozlt

fquxozlt1#

您可以通过以下方式修改DB2输出过程:

CREATE OR REPLACE PROCEDURE
...
SPECIFIC ...
DYNAMIC RESULT SETS 1
...
BEGIN
  ...
  IF ... THEN
    BEGIN
      DECLARE cur1 CURSOR WITH RETURN TO CALLER FOR
        SELECT ...
        ...
        ;
      OPEN cur1;
    END;
  END IF;
END @

字符串

相关问题