IBM DB2 SQL PL中“set”和“select into”之间的差异

时间:2013-03-05 17:20:02

标签: db2 sql-pl

在SQL PL中开发时,'set'和'select into'之间有什么区别?

set var = (select count(1) from emp);

select count(1) into var from emp;

它们完全相同吗?我在哪里可以找到关于它们的文件?

3 个答案:

答案 0 :(得分:3)

发出选择时,它不会返回任何值:

  • 选择抛出异常
  • set获取空值

您可以使用以下两个存储过程检查差异:

使用set:

create or replace procedure test1 (
in name varchar(128)
)
begin
 declare val varchar(128);

 set val = (select schemaname
   from syscat.schemata where schemaname = name);
end @

使用select into

create or replace procedure test2 (
in name varchar(128)
)
begin
 declare val varchar(128);

 select schemaname into val
   from syscat.schemata where schemaname = name;
end @

通话集

$ db2 "call test1('nada')"

  Return Status = 0

调用select into

$ db2 "call test2('nada')"

  Return Status = 0

SQL0100W  No row was found for FETCH, UPDATE or DELETE; or the result of a 
query is an empty table.  SQLSTATE=02000

这是两者之间的差异。使用select into时,您必须处理处理程序。

答案 1 :(得分:1)

据我所知,他们是

在某些情况下,你会做一种技巧而不是另一种技术。

例如。您不能在SET

中使用WITH UR

SET var1 =(selct .... from t with ur)

但可以做到

select a into var1 from t with ur 

答案 2 :(得分:-1)

SELECT INTO适用于SELECT语句。

使用SET,您可以直接指定函数的结果,进行计算或指定其他变量。 e.g。

SET var = var + 1;
SET var1 = var;