如何使此功能在 Oracle 11G 中运行 - PL/SQL
How to get this function to work in Oracle 11G - PL/SQL
我是 PL/SQL 的新手,我有一个任务需要创建一个函数。赋值如下:
> "Create a function 'afdeling_van:'
> - this function accepts a medewerkernummer(employee number) as argument
> - give the afdelingnummer(department number) from the medewerkernummer(employee number) back"
所以我需要创建一个函数,其参数是 return 一个数字。之后我可能需要添加一些代码以使其 return 返回 medewerker(员工)号码。
因为我对 PL/SQL 真的很陌生,所以我对这个很感兴趣。我目前拥有的是:
declare
procedure afdeling_van(p_persoon in medewerkers.mnr%type)--table name with column name
is
begin
select med.mnr
from medewerkers med;
where mnr = p_persoon;
end afdeling_van;
begin
afdeling_van(10);
end;
它对我不起作用。我尝试了不同的解决方案。但由于我缺乏经验,我无法在网上找到我需要的解决方案或信息。我想在这里问一下
还有一件事。我认为这与我的问题类似。在之前的作业中,我创建了一个过程而不是一个函数。程序如下:
declare
v_medewerker varchar2(50) := ontsla_med();
procedure ontsla_med(p_medewerkers in medewerkers.naam%type)
is
begin
delete from medewerkers
where naam = p_medewerkers;
end ontsla_med;
begin
ontsla_med('');
dbms_output.put_line('Medewerker: ' || v_medewerker || 'verwijdert uit medewerker, inschrijven en uitvoeringen bestand.' );
exception
when no_data_found then
dbms_output.put_line('Medewerker bestaat niet/ is al verwijderd.');
end;
/
除最后一个 dbms_output.put_line 外,此方法有效。如果我删除输出线,那么它会工作,而对于输出线,它不会。
希望我的问题不要太含糊。
提前致谢。
您需要创建一个函数而不是一个过程,并且您在错误的位置使用了分号。尝试类似的东西:
declare
nReturned_value MEDEWERKERS.AFDELINGNUMMER%TYPE;
FUNCTION afdeling_van(p_persoon in medewerkers.mnr%type) --table name with column name
RETURN MEDEWERKERS.AFDELINGNUMMER%TYPE
is
nAFDELINGNUMMER MEDEWERKERS.AFDELINGNUMMER%TYPE;
begin
select med.AFDELINGNUMMER
INTO nAFDELINGNUMMER
from medewerkers med
where mnr = p_persoon;
RETURN nAFDELINGNUMMER ;
end afdeling_van;
begin
nReturned_value := afdeling_van(10);
DBMS_OUTPUT.PUT_LINE('nReturned_value = ' || nReturned_value);
end;
编辑
在您的第二个示例中,我认为 v_medewerker varchar2(50) := ontsla_med();
行不会编译。 ontsla_med
是一个过程而不是一个函数,并且因为过程不 return 任何它们不能在赋值语句中使用的东西。
但是,v_medewerker
仅在 DBMS_OUTPUT
行中使用,您说这会导致问题 - 因此,编译器可能正在消除该变量,因为如果 DBMS_OUTPUT
行被删除,从而消除了问题。尝试将声明更改为 v_medwerker varchar2(50) := 'Hello';
,看看是否有帮助。
我是 PL/SQL 的新手,我有一个任务需要创建一个函数。赋值如下:
> "Create a function 'afdeling_van:' > - this function accepts a medewerkernummer(employee number) as argument > - give the afdelingnummer(department number) from the medewerkernummer(employee number) back"
所以我需要创建一个函数,其参数是 return 一个数字。之后我可能需要添加一些代码以使其 return 返回 medewerker(员工)号码。
因为我对 PL/SQL 真的很陌生,所以我对这个很感兴趣。我目前拥有的是:
declare
procedure afdeling_van(p_persoon in medewerkers.mnr%type)--table name with column name
is
begin
select med.mnr
from medewerkers med;
where mnr = p_persoon;
end afdeling_van;
begin
afdeling_van(10);
end;
它对我不起作用。我尝试了不同的解决方案。但由于我缺乏经验,我无法在网上找到我需要的解决方案或信息。我想在这里问一下
还有一件事。我认为这与我的问题类似。在之前的作业中,我创建了一个过程而不是一个函数。程序如下:
declare
v_medewerker varchar2(50) := ontsla_med();
procedure ontsla_med(p_medewerkers in medewerkers.naam%type)
is
begin
delete from medewerkers
where naam = p_medewerkers;
end ontsla_med;
begin
ontsla_med('');
dbms_output.put_line('Medewerker: ' || v_medewerker || 'verwijdert uit medewerker, inschrijven en uitvoeringen bestand.' );
exception
when no_data_found then
dbms_output.put_line('Medewerker bestaat niet/ is al verwijderd.');
end;
/
除最后一个 dbms_output.put_line 外,此方法有效。如果我删除输出线,那么它会工作,而对于输出线,它不会。
希望我的问题不要太含糊。
提前致谢。
您需要创建一个函数而不是一个过程,并且您在错误的位置使用了分号。尝试类似的东西:
declare
nReturned_value MEDEWERKERS.AFDELINGNUMMER%TYPE;
FUNCTION afdeling_van(p_persoon in medewerkers.mnr%type) --table name with column name
RETURN MEDEWERKERS.AFDELINGNUMMER%TYPE
is
nAFDELINGNUMMER MEDEWERKERS.AFDELINGNUMMER%TYPE;
begin
select med.AFDELINGNUMMER
INTO nAFDELINGNUMMER
from medewerkers med
where mnr = p_persoon;
RETURN nAFDELINGNUMMER ;
end afdeling_van;
begin
nReturned_value := afdeling_van(10);
DBMS_OUTPUT.PUT_LINE('nReturned_value = ' || nReturned_value);
end;
编辑
在您的第二个示例中,我认为 v_medewerker varchar2(50) := ontsla_med();
行不会编译。 ontsla_med
是一个过程而不是一个函数,并且因为过程不 return 任何它们不能在赋值语句中使用的东西。
但是,v_medewerker
仅在 DBMS_OUTPUT
行中使用,您说这会导致问题 - 因此,编译器可能正在消除该变量,因为如果 DBMS_OUTPUT
行被删除,从而消除了问题。尝试将声明更改为 v_medwerker varchar2(50) := 'Hello';
,看看是否有帮助。