为了账号安全,请及时绑定邮箱和手机立即绑定

如果没有二维数组,我的查询是否可以正常工作

如果没有二维数组,我的查询是否可以正常工作

PHP
阿晨1998 2024-01-19 15:05:05
我很困惑,因为我向内看并试图解决问题。我有PHP正在运行的应用程序Oracle DB,到目前为止,一些表达式是在 MySQL 中编写的,现在我想将这些查询迁移到Oracle SQL函数并调用函数,而不是直接将查询写入模型。情况如下我有功能线public function getAtaNumber($data) {    if( $data["Type"] == 1 ) {            $sql = "SELECT SUM(NextNumber) + 1 AS NextNumber                 FROM (                        SELECT COUNT(a1.ATAID)  AS NextNumber                         FROM ata AS a1                         WHERE a1.ProjectID = '".$data["project"]["id"]."'                         AND a1.Ata = 1                         AND a1.ParentAta = 0                         AND a1.TYPE = 1                         AND a1.BecomeExternalAtaFromInternal = 0                     UNION ALL                        SELECT COUNT(a2.ATAID)  AS NextNumber                         FROM ata AS a2                         WHERE a2.ProjectID = '".$data["project"]["id"]."'                         AND a2.Ata = 1                         AND a2.ParentAta = 0                         AND a2.BecomeExternalAtaFromInternal = 1 ) AS A";        } else {            $sql = "SELECT COUNT(ata.ATAID) + 1 AS NextNumber                 FROM ata                 WHERE ProjectID = '".$data["project"]["id"]."'                 AND Ata = 1                 AND ParentAta = 0                 AND Type = 0                 ORDER BY ATAID DESC                 LIMIT 1;";            if (!$result = $conn->query($sql)) {            error_log($conn->error);            return false;        }    }}这让我很困惑,我不知道如何编写这段安静的代码。因为我运行了它们两个的 SELECT 语句并且它返回了正确的结果,但我不知道该怎么办,IF 因为这是二维数组,我不知道如何在PLSQL Oracle SQL 运行第一个 SELECT 语句时写入它
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

以下函数返回给定 PROJECT_ID 和 TYPE 的下一个 ATA 编号。


create or replace function get_ata_number (

    p_project_id in number

   ,p_type       in number

) return number as

   

  l_NextNumber number;


begin  


  if p_type = 1 then


    SELECT SUM(NextNumber) + 1 

    into l_NextNumber

    FROM (

          SELECT COUNT(a1.ATAID)  AS NextNumber 

          FROM ata AS a1 

          WHERE a1.ProjectID = p_project_id

          AND a1.Ata = 1 

          AND a1.ParentAta = 0 

          AND a1.TYPE = 1 

          AND a1.BecomeExternalAtaFromInternal = 0 

          UNION ALL

          SELECT COUNT(a2.ATAID)  AS NextNumber 

          FROM ata AS a2 

          WHERE a2.ProjectID = p_project_id

          AND a2.Ata = 1 

          AND a2.ParentAta = 0 

          AND a2.BecomeExternalAtaFromInternal = 1 );

    

   else 


     SELECT COUNT(ata.ATAID) + 1 

     into l_NextNumber

     FROM ata 

     WHERE ProjectID = p_project_id

     AND Ata = 1 

     AND ParentAta = 0 

     AND Type = 0 ;


  end if;


  return l_NextNumber;

  

end get_ata_number;    

请注意我对 PROJECT_ID 数据类型的假设,并在必要时更正它。


查看完整回答
反对 回复 2024-01-19
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信