oracle存储过程select变量赋值,oracle – 为存储过程中的变量分配Select

这篇博客内容涉及在Oracle数据库中创建存储过程时遇到的问题。作者指出,尝试将查询结果赋值给变量时遇到了错误,因为PL/SQL不支持直接在SELECT语句后跟赋值操作。解决方案是使用SELECT INTO语句,并且在IF语句中需要使用THEN和END IF,而不是大括号。博客还提供了修正后的存储过程代码示例,将其转换为一个返回结果的函数。
摘要由CSDN通过智能技术生成

我尝试在我的Oracle数据库中创建一个过程,但无法实现将查询结果分配给我的变量.这是我正在尝试调试的内容:

create or replace

PROCEDURE PCD_COMBAT (identifier_perso NUMBER,identifier_advers NUMBER) AS

ATT_PERSO NUMBER;

OFF_PERSO NUMBER;

DEF_ADVERS NUMBER;

BEGIN

OFF_PERSO := SELECT OFFENSE_PERSO FROM PERSONNAGE WHERE ID_PERSO = identifier_perso;

DEF_ADVERS := SELECT DEFENSE_ADVERSAIRE FROM PERSONNAGE WHERE ID_ADVERSAIRE = identifier_advers;

ATT_PERSO := OFF_PERSO - DEF_ADVERS;

IF ATT_PERSO < 1 { ATT_PERSO := 1 };

END PCD_COMBAT;

它在Oracle Developper中清楚地表明,我的Select并没有让他高兴,也无法弄明白为什么.我读过的Oracle库,论坛和代码示例并没有多大帮助.

您需要使用SELECT INTO. PL / sql中没有大括号你需要使用THEN和END IF.我不太清楚你对结果做了什么.你想要还给它吗?那你需要一个功能.它应该看起来像这样(未经测试):

create or replace

FUNCTION PCD_COMBAT (identifier_perso NUMBER,identifier_advers NUMBER)

RETURN NUMBER

AS

ATT_PERSO NUMBER;

OFF_PERSO NUMBER;

DEF_ADVERS NUMBER;

BEGIN

SELECT OFFENSE_PERSO

INTO OFF_PERSO

FROM PERSONNAGE

WHERE ID_PERSO = identifier_perso;

SELECT DEFENSE_ADVERSAIRE

INTO DEF_ADVERS

FROM PERSONNAGE

WHERE ID_ADVERSAIRE = identifier_advers;

ATT_PERSO := OFF_PERSO - DEF_ADVERS;

IF ATT_PERSO < 1 THEN

ATT_PERSO := 1;

END IF

RETURN ATT_PERSO;

END PCD_COMBAT;

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值