Oracle 我试图在Pl/Sql中创建一个过程,我得到了这个错误

Oracle 我试图在Pl/Sql中创建一个过程,我得到了这个错误,oracle,plsql,Oracle,Plsql,-图片 我正在计算当前的产品库存。 我有产品接收表,我可以在其中计算库存。 和sales vanzari表。将代码作为图像发布通常是个坏主意 无论如何:有不少反对意见: 不要将过程或表格、列…括起来。。。名称用双引号引起来 命名参数,使其名称不同于列名,例如:编号不是cod_pds,而是编号为par_cod_pds 在声明部分声明变量,该部分介于is和begin之间。不要使用var关键字。给它们命名是个好主意,这样名称就可以反映出这些是局部变量的事实,比如l_stoc_pds number 不要

-图片

我正在计算当前的产品库存。 我有产品接收表,我可以在其中计算库存。
和sales vanzari表。

将代码作为图像发布通常是个坏主意

无论如何:有不少反对意见:

不要将过程或表格、列…括起来。。。名称用双引号引起来 命名参数,使其名称不同于列名,例如:编号不是cod_pds,而是编号为par_cod_pds 在声明部分声明变量,该部分介于is和begin之间。不要使用var关键字。给它们命名是个好主意,这样名称就可以反映出这些是局部变量的事实,比如l_stoc_pds number 不要在PL/SQL过程中使用exec,尤其不要运行select语句。exec在SQL*Plus中用于运行PL/SQL过程,例如exec calculstoclazi 不要选择前面带有冒号的变量,只需命名变量即可 这两个select语句完全相同;我不知道你那样做意味着什么。此外,您在cod_pds之前使用了stoc_pds,这是一个变量名,所以这是完全错误的;如果列名前面要加上某些内容,则为表名或其别名 因此,看起来像是有效的代码是这样的;显然,结果将是0。正如我告诉你的,这两个选择是完全相同的

create or replace procedure calculstoclazi
  (par_cod_pds  in  number,
   par_rezultat out number
  )
is
  l_stocs_pds     number;
  l_total_vanzare number;
begin
  select sum(cantitate) 
    into l_stoc_pds
    from receptie_marfa
    where cod_pds = par_cod_pds;

  select sum(cantitate) 
    into l_total_vanzare
    from receptie_marfa
    where cod_pds = par_cod_pds;

  par_rezultat := l_stoc_pds - l_total_vanzare;
end;

将代码作为图像发布通常是个坏主意

无论如何:有不少反对意见:

不要将过程或表格、列…括起来。。。名称用双引号引起来 命名参数,使其名称不同于列名,例如:编号不是cod_pds,而是编号为par_cod_pds 在声明部分声明变量,该部分介于is和begin之间。不要使用var关键字。给它们命名是个好主意,这样名称就可以反映出这些是局部变量的事实,比如l_stoc_pds number 不要在PL/SQL过程中使用exec,尤其不要运行select语句。exec在SQL*Plus中用于运行PL/SQL过程,例如exec calculstoclazi 不要选择前面带有冒号的变量,只需命名变量即可 这两个select语句完全相同;我不知道你那样做意味着什么。此外,您在cod_pds之前使用了stoc_pds,这是一个变量名,所以这是完全错误的;如果列名前面要加上某些内容,则为表名或其别名 因此,看起来像是有效的代码是这样的;显然,结果将是0。正如我告诉你的,这两个选择是完全相同的

create or replace procedure calculstoclazi
  (par_cod_pds  in  number,
   par_rezultat out number
  )
is
  l_stocs_pds     number;
  l_total_vanzare number;
begin
  select sum(cantitate) 
    into l_stoc_pds
    from receptie_marfa
    where cod_pds = par_cod_pds;

  select sum(cantitate) 
    into l_total_vanzare
    from receptie_marfa
    where cod_pds = par_cod_pds;

  par_rezultat := l_stoc_pds - l_total_vanzare;
end;

请相应地阅读并更新您的问题。您将pl/sql与sqlplus混淆。请相应地阅读并更新您的问题。您将pl/sql与sqlplus混淆。