Zum Inhalt springen

myrabbitrules

Mitglieder
  • Gesamte Inhalte

    4
  • Benutzer seit

  • Letzter Besuch

  1. wieso ich arbeite in der prozedur doch damit weiter. Zitat: newknr := einfuegen2(vorname, name, geschlecht, land); insert into auftrag values (newknr, datum, betrag, 0, mahntermin);
  2. so klappt es leider auch nicht. Jetzt sagt er mir: ungültige Bindevariable foo. Ich hab mal gegoogelt und irgendjemand sagte, dass schlüsselwort variable dürfte man nur bei sql*plus und nicht bei plsql benutzen. Ich habs weggelassen, aber die Fehlermeldung "ungültige Bindevariable" bleibt. Ich habs auch mit meiner "newknr" probiert - das selbe Problem... Das ist doch bestimmt irgendwas total Triviales Bitte helft mir auf die Sprünge..
  3. Hm komisch, das von Stefan geht bei mir auch... Ich hab echt keine Idee.. Könnte vielleicht jemand einfach mal folgendes copy-pasten: set feedback 7 set echo on set serveroutput on drop table kunde cascade constraints; drop table auftrag cascade constraints; drop table eintreiber cascade constraints; create table kunde( knr number(5), vorname varchar(10), name varchar(10) not null, geschlecht varchar(1), land varchar(3), primary key(knr), constraint kunde1 check(geschlecht in ('M','W')) ); create table auftrag( knr number(5), datum date, betrag number(7,2) not null, mahnungsanzahl number(1) default 0, mahntermin date not null, primary key(knr,datum), constraint auftrag1 check(mahnungsanzahl<4), constraint auftrag2 foreign key(knr) references kunde(knr) ); create table eintreiber( knr number(5), rechnungsdatum date, uebergabetermin date, primary key(knr,rechnungsdatum) ); create or replace procedure einfuegen ( kundennummer in kunde.knr%type, vorname in kunde.vorname%type, name in kunde.name%type, geschlecht in kunde.geschlecht%type, land in kunde.land%type ) is begin insert into kunde values(kundennummer, vorname, name, geschlecht, land); end; / execute einfuegen(23, 'Hans', 'Meier', 'M', 'Ger'); select * from kunde; create or replace function einfuegen2 ( vorname in kunde.vorname%type, name in kunde.name%type, geschlecht in kunde.geschlecht%type, land in kunde.land%type ) return kunde.knr%type is newknr kunde.knr%type; begin select max(kunde.knr) into newknr from kunde; if (newknr is null) then newknr := 0; else newknr := newknr + 1; end if; insert into kunde values(newknr, vorname, name, geschlecht, land); return newknr ; end; / execute einfuegen2('Peter', 'Maffai', 'M', 'Ger'); execute einfuegen2('Richard', 'Schubert', 'M', 'Ger'); select * from kunde; create or replace procedure auftrag_eintragen ( kundennummer auftrag.knr%type, betrag auftrag.betrag%type, datum auftrag.datum%type ) is mahntermin auftrag.datum%type; begin mahntermin := datum + 7; insert into auftrag values (kundennummer, datum, betrag, 0, mahntermin); end; / execute auftrag_eintragen(23, 23.34, sysdate); select * from auftrag; create or replace procedure auftrag_eintragen2 ( vorname in kunde.vorname%type, name in kunde.name%type, geschlecht in kunde.geschlecht%type, land in kunde.land%type, betrag auftrag.betrag%type, datum auftrag.datum%type ) is newknr kunde.knr%type; begin newknr := einfuegen2(vorname, name, geschlecht, land); insert into auftrag values (newknr, datum, betrag, 0, mahntermin); end; / execute auftrag_eintragen2('Carmen', 'Electra', 'W', 'USA', 2348.34, sysdate); select * from auftrag; in der letzten Funktion kommt es bei mir zum Compiler-Fehler.
  4. Hi! Ich bin noch sql Anfänger. Ich erzeuge in einem oracle sql skript zunächst eine Funktion einfuegen2: create or replace function einfuegen2 ( ... ) return kunde.knr%type is ... return newknr ; end; / in dem selben skript erzeuge ich eine Prozedur auftrag_eintragen2: create or replace procedure auftrag_eintragen2 ( ... ) is newknr kunde.knr%type; begin newknr := einfuegen2(vorname, name, geschlecht, land); insert into auftrag values (newknr, datum, betrag, 0, mahntermin); end; / Dann führe ich das Skript aus. Die Funktion einfuegen2 wird auch kompiliert und in meinem sql developer angezeigt. Nur meckert der Kompiler in der Prozedur auftrag_eintragen2. Er meint, dass newknr := einfuegen2(vorname, name, geschlecht, land); nicht geht, weil in diesem Geltungsbereich keine Funktion mit dem Namen einfuegen2 vorhanden sei. Das verstehe ich nicht. Muss ich die Funktion noch lokal in der Prozedur bekannt machen? (Wie gesagt, alles steht im selben Skript und ich arbeite mit dem oracle sql developer) Ich wäre euch sehr dankbar.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...