从不带 out 参数的预言机函数或过程返回布尔值


Returning boolean from oracle function or procedure with out parameter

我需要用php开发一个 Web 应用程序。对于登录过程,.通常我会使用带有 id 和密码的 select 语句,如果行返回,则成功登录。但是我想使用存储过程,不想从数据库中获取任何行,而是简单的boolean值。PL/SQL过程的签名如下。

procedure successful_login(cit_id in citizens.citizen_id%type,
                           pass in varchar2,v_login_successful out boolean)

我不会用代码膨胀页面,但过程v_login_successful更改为 true 或 false,具体取决于 PL/SQL 中的成功登录。但我想从 PHP 调用此过程。如果我将 php 变量绑定到v_login_successful参数并从 PHP 执行过程,PL/SQL 引擎会将v_login_successful变量的更改版本返回给 PHP 吗?

PL/SQL 有布尔数据类型,但 SQL 没有。这意味着,您可以

  1. 在函数、过程、匿名块中使用它。
  2. 仅当它们在 PL/SQL 上下文中使用时,才将其用作过程和函数中的参数。

当你从 php 调用该过程时,它将是一个 sql 语句。你会得到,expression is of wrong type例外。

相反,您可以将 CHAR(1)(Y 或 N)或NUMBER(1)(0 或 1)数据类型用于 out 参数。