首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DB2中从存储过程中获取变量值?

问如何在DB2中从存储过程中获取变量值?
EN

Stack Overflow用户
提问于 2010-03-23 02:12:06
回答 4查看 27.2K关注 0票数 2

这看起来应该是非常easy...anyway的,它在MS SQL Server中

在DB2存储过程中,如何才能获得变量的值?假设我有以下存储过程:

代码语言:javascript
复制
CREATE PROCEDURE etl.TestABC( 
) 
LANGUAGE SQL 
  BEGIN 
    declare      Stmt              varchar(2048); 
    set Stmt = 'this is a test';
-- print Stmt;
-- select Stmt;


    return 0; 
END @ 

我想在设置Stmt之后打印出它的值。打印不起作用,选择不起作用。有人说我必须先把它插入到一个表中,然后在运行存储过程后再获取它。这真的有必要吗?

谢谢,西尔维娅

编辑:我应该更清楚地表明,我希望在每次设置Stmt之后都能看到它的值,并且可能需要在同一存储过程中多次设置它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-23 13:12:54

如果希望在开发/测试存储过程时查看这些值,那么应该使用IBM Data Studio并调试存储过程。这提供了正常的调试器功能,因此您可以在过程执行时看到变量的值。

但是,如果您只想执行存储过程并查看值的历史记录,我建议您创建一个全局临时表,并在代码中向其中插入一行:

代码语言:javascript
复制
declare global temporary table StmtHistory (
  when timestamp not null with default current timestamp, 
  stmt varchar(2048) not null
  ) on commit preserve rows;

然后,在您的存储过程中添加:

代码语言:javascript
复制
insert into session.StmtHistory (stmt) values (stmt);

在执行存储过程之后,您可以查询表session.StmtHistory并查看您要查找的值。

此外,Oracle9.7添加了DB2兼容性,所以如果您使用此版本,如果您愿意的话,实际上可以使用DBMS_OUTPUT.PUT_LINE和DBMS_OUTPUT.GET_LINES来实现这一点。

票数 6
EN

Stack Overflow用户

发布于 2010-03-23 02:31:52

必须在过程的构造函数中声明该变量:

代码语言:javascript
复制
CREATE PROCEDURE etl.TestABC(
    OUT Stmt varchar(2048)
) 
LANGUAGE SQL 
BEGIN 
    --    declare      Stmt              varchar(2048); 
    set Stmt = 'this is a test';
    -- print Stmt;
    -- select Stmt;

    return 0;
END @ 

这将允许您访问它,即从控制台:

代码语言:javascript
复制
call etl.TestABC(?)

输出如下所示:

代码语言:javascript
复制
Value of output parameters

Parameter Name  : STMT
Parameter Value : this is a test

Return Status = 0

注:目前我还不能访问我们的DB2服务器,但我相信上面的应该可以解决这个问题。基于:http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.apdv.sql.doc/doc/t0007055.htm的示例

票数 3
EN

Stack Overflow用户

发布于 2010-03-23 02:41:17

尝试下面的代码行:

代码语言:javascript
复制
values Stmt;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2494656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档