这似乎应该很容易......无论如何,它在MS SQL Server中
在DB2存储过程中,如何获取变量的值?说我有以下存储过程:
CREATE PROCEDURE etl.TestABC(
)
LANGUAGE SQL
BEGIN
declare Stmt varchar(2048);
set Stmt = 'this is a test';
-- print Stmt;
-- select Stmt;
return 0;
END @
Run Code Online (Sandbox Code Playgroud)
我想在设置之后打印出Stmt的值.打印不起作用,选择不起作用.有人说我必须先将它插入表中,然后在运行存储过程后获取它.这真的有必要吗?
谢谢,西尔维亚
编辑:我应该更清楚,我想在每次设置后看到Stmt的值,我可能需要在同一个存储过程中多次设置它.
如果要在开发/测试存储过程时查看值,则应使用IBM Data Studio并调试存储过程.这提供了正常的调试器功能,因此您可以在过程执行时查看变量的值.
但是,如果您只想执行存储过程并查看值的历史记录,我建议创建一个全局临时表,并在代码中插入一行:
declare global temporary table StmtHistory (
when timestamp not null with default current timestamp,
stmt varchar(2048) not null
) on commit preserve rows;
Run Code Online (Sandbox Code Playgroud)
然后,在存储过程中的点处,添加:
insert into session.StmtHistory (stmt) values (stmt);
Run Code Online (Sandbox Code Playgroud)
执行存储过程后,您可以查询表session.StmtHistory并查看要查找的值.
此外,DB2 9.7增加了Oracle兼容性,因此如果您使用此版本,您实际上可以使用DBMS_OUTPUT.PUT_LINE和DBMS_OUTPUT.GET_LINES来实现此目的,如果您愿意的话.