У меня есть следующая процедура:Oracle удаления из вложенной таблицы
CREATE OR REPLACE PROCEDURE My_Procedure
AS
CURSOR proced IS
SELECT aID FROM A;
BEGIN
FOR row IN proced LOOP
INSERT INTO AQ VALUES (row.aID, AQ_NT(AQT('',NULL, '', '')));
DELETE TABLE (SELECT Q FROM AQ) AQT WHERE AQT.Year=NULL;
END LOOP;
END My_Procedure;
/
И процедура создает хорошо, но у меня есть проблема в выполнении его, я использую следующую команду:
EXECUTE My_Procedure;
Но я получаю следующее сообщение об ошибке:
ERROR at line 1:
ORA-01427: single-row subquery returns more than one row
ORA-06512: at “SMITH. My_Procedure”, LINE 8
Ora-06512: at line 1
Я был на этом в течение нескольких недель, я 100% уверен, что команда для ехеса ute является правильным. И ORACLE 10G создает процедуру штрафа, поэтому, пожалуйста, вы можете предоставить помощь, которую я могу решить эту проблему.
Спасибо так много
Я думаю, 'LINE 8': DELETE TABLE (SELECT Q FROM AQ) AQT WHERE AQT.Year = NULL;'. И подзапрос «однострочный» должен быть '(SELECT Q FROM AQ)'. Ну, хотя я не эксперт в Oracle, но из того, что я знаю о SQL, я вполне могу поверить, что такой запрос * может * возвращать более одной строки. Может быть, вы должны переместить условие «YEAR = NULL» в подзапрос (и, возможно, сделать его более конкретным)? –
С другой стороны, почему этот вопрос помечен 'mysql'? –
Даже если это, вероятно, не проблема, 'AQT.Year = NULL' должен быть' AQT.Year is NULL' –