Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2020-05-28, 22:39
  #13
Medlem
miikoss avatar
Citat:
Ursprungligen postat av bosscs2
Här är en till, vad är fel?

Kod:
create sequence my_seq 
begin with 1 
increment by 1; 

create or replace table tools ( 
pk number(1), 
artnamn varchar(20),
pris number(6)
); 

create or replace procedure setArtnamn (
p_artnamn in tools.artnamn%type,
p_pris in tools.pris%type)
as 
counter number;
begin 
select my_seq.nextval
into counter 
from dual; 
insert into tools(pk, artnamn, pris) 
values(counter, p_artnamn, p_pris); 
commit; 
end; 
/ 

begin 
setArtnamn('skruvmejsel',50); 
end; 
/ 

select * 
from tools; 

Feleddeleandet:
ORA-00933: SQL command not properly ended



ORA-00922: missing or invalid option



Errors: PROCEDURE SETARTNAMN
Line/Col: 0/0 PL/SQL: Compilation unit analysis terminated
Line/Col: 2/14 PLS-00201: identifier 'TOOLS.ARTNAMN' must be declared

ORA-06550: line 2, column 1:
PLS-00905: object SQL_RFIMIKHVOERNBTFSVZUNUAQOD.SETARTNAMN is invalid



ORA-00942: table or view does not exist

Första felet är syntaxen för sequencen.

https://www.oracletutorial.com/oracl...eate-sequence/

Det finns inget or replace för tabeller. Vill du skapa en ny med samma namn så behöver du köra drop table innan.

Prova om det hjälper. Nu skapas ju ingen tabell.
Citera
2020-05-29, 17:29
  #14
Medlem
En fråga, kan endast en foreign key vara knuten till en primary key i en annan tabell?
__________________
Senast redigerad av bosscs2 2020-05-29 kl. 17:35.
Citera
2020-06-01, 10:12
  #15
Medlem
blackadder1s avatar
Citat:
Ursprungligen postat av bosscs2
En fråga, kan endast en foreign key vara knuten till en primary key i en annan tabell?
Hur menar du? Din fråga är lite tvetydig.
Självklart kan du ha en composite primary key som foreign key i en annan tabell.
Citera
2020-06-02, 16:08
  #16
Medlem
Vad är fel:

Kod:
create or replace table testa ( 
pk number(2), 
namn varchar(20)
); 

insert into testa(pk, namn)
values(1,'ekonomi'); 

select * from testa; 
Citera
2020-06-03, 07:47
  #17
Medlem
Aha... or replace - funktionen funkar inte med table anropet.
Citera
2022-04-21, 20:49
  #18
Medlem
Nostradumbasss avatar
create procedure or replace v_person

create or replace [procedure|function] blah...

är korrekt syntax
Citera
2022-04-22, 21:23
  #19
Moderator
Protons avatar
Citat:
Ursprungligen postat av bosscs2
En fråga, kan endast en foreign key vara knuten till en primary key i en annan tabell?
Verkar ju helt galet om det bara kan få finnas en 1-1 mellan PK och FK.

Samma attribut med samma betydelse borde ju rimligtvis kunna förekomma i flera tabeller, varför skulle man då inte kunna ha en FK i dessa tabeller som pekar ut en PK i en annan tabell?
Citera
2022-04-23, 13:27
  #20
Medlem
Nostradumbasss avatar
Citat:
Ursprungligen postat av bosscs2
Här är en till, vad är fel?

Kod:
create sequence my_seq 
begin with 1 
increment by 1; 

create or replace table tools ( 
pk number(1), 
artnamn varchar(20),
pris number(6)
); 

create or replace procedure setArtnamn (
p_artnamn in tools.artnamn%type,
p_pris in tools.pris%type)
as 
counter number;
begin 
select my_seq.nextval
into counter 
from dual; 
insert into tools(pk, artnamn, pris) 
values(counter, p_artnamn, p_pris); 
commit; 
end; 
/ 

begin 
setArtnamn('skruvmejsel',50); 
end; 
/ 

select * 
from tools; 

Feleddeleandet:
ORA-00933: SQL command not properly ended



ORA-00922: missing or invalid option



Errors: PROCEDURE SETARTNAMN
Line/Col: 0/0 PL/SQL: Compilation unit analysis terminated
Line/Col: 2/14 PLS-00201: identifier 'TOOLS.ARTNAMN' must be declared

ORA-06550: line 2, column 1:
PLS-00905: object SQL_RFIMIKHVOERNBTFSVZUNUAQOD.SETARTNAMN is invalid



ORA-00942: table or view does not exist

Tabellen skapas inte och du får ORA-00942 för du kan inte göra "CREATE OR RELACE TABLE".
Skapa tabellen med "CREATE TABLE...", och om du ska ändra den måste du köra "ALTER TABLE..." alternativt "DROP TABLE..." och sen "CREATE TABLE..." igen.

Sen använder du en sekvens för primary key som är deklarerad som "Number(1)"; det gör att du kan spara 0-9 i tabellen. När sekvensen når 10 efter 10 körningar kommer koden att faila på att du inte får plats med siffran i primary keyn.

Sen kan förenkla koden från

begin
select my_seq.nextval
into counter
from dual;
insert into tools(pk, artnamn, pris)
values(counter, p_artnamn, p_pris);
commit;
end;

till

begin
insert into tools(pk, artnamn, pris)
values(my_seq.nextval, p_artnamn, p_pris);
commit;
end;
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback