Проверка первичного ключа SQL в хранимой процедуре
Я почесал интернет без удачи. Я приложил ссылки к учебному набору, над которым я работаю, но я создаю хранимую процедуру, которая должна обновлять строку после проверки, совпадает ли внешний ключ из одной таблицы с соответствующим первичным ключом в другой таблице. Я пока прикреплю свой код (что немного), но я честно потерян. Я знаю, как создать ограничения внешнего ключа, такие как:
ALTER TABLE DRIVE
ADD CONSTRAINT TRUCK_NUM_FK FOREIGN KEY (TRUCK_NUM) REFERENCES TRUCK;
Но я не знаю, как сделать эти вещи и многое другое из хранимой процедуры. Спасибо!
Описание практики: http://tinypic.com/r/2djxq4w/8 http://tinypic.com/r/sq61i1/8
CREATE OR REPLACE PROCEDURE TRUCK_RETURN (TR_NUM IN NUMBER,TR_MILE IN NUMBER) AS
BEGIN
IF
UPDATE
1 ответ
Решение
Это может быть не точно, но, надеюсь, это приблизит вас:
CREATE OR REPLACE PROCEDURE TRUCK_RETURN (TR_NUM IN NUMBER,TR_MILE IN NUMBER) AS
BEGIN
IF TR_NUM IS NULL THEN
Dbms_Output.PUT_LINE('Error: No truck number supplied.');
ELSE
DECLARE TR NUMBER(10);
SELECT TRUCK_NUM
INTO TR
FROM TRUCK
WHERE TR_NUM = TRUCK_NUM;
IF TR IS NOT NULL AND TR = TR_NUM THEN
SELECT Truck_Mileage
INTO TR
FROM Truck
WHERE Truck_Num = TR_NUM;
IF TR_MILE >= TR THEN
SELECT COUNT(*)
INTO TR
FROM DRIVE
WHERE Truck_Num = TR_NUM
AND Drive_Status = ‘OUT’;
IF TR = 1 THEN
UPDATE Drive
SET Drive_Status = ‘Received’
WHERE Truck_Num = TR_NUM
AND Drive_Status = ‘OUT’;
ELSE
Dbms_Output.PUT_LINE('Error: Truck has too many or not record of being out.’);
END IF;
ELSE
Dbms_Output.PUT_LINE('Error: Truck mileage is less than previously recorded.’);
END IF;
ELSE
Dbms_Output.PUT_LINE('Error: Truck Number is incorrect.’);
END IF;
END IF;
END TRUCK_RETURN;