DECLARE dyn_stmt VARCHAR2(200);
b1 boolean;
FUNCTION f(x INTEGER) RETURN boolean AS
BEGIN
RETURN FALSE;
END f;
BEGIN
dyn_stmt := 'BEGIN :b := f(5); END;';
EXECUTE IMMEDIATE dyn_stmt USING OUT b1; --line 9
b1:=f(5); --line 10
END;
评论第 10 行会引发错误,而评论第 9 行工作正常。为什么 ?根据错误“表达式必须是 SQL 类型”并且 AFAIK PL/SQL 支持布尔数据类型。那么,这里有什么问题呢?