2015-01-15 2 views
0

Я показываю много вопрос и ответ на StackOverflow, но я не могу найти решение такого рода проблемЗачем показывать ошибку в результате mysql, состоящую более чем из одной строки?

USE `student`; 
DROP procedure IF EXISTS `useOUT`; 
DELIMITER $$ USE`student`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `useOUT`(in in_name varchar(15),out in_dept varchar(15)) 
BEGIN 
select dept into in_dept from info where nam=in_name; 
END$$ 
DELIMITER ; 

Мой стол

ID. nam. отдел

1. сакиб. cse.

2. сакиб. математика.

, когда я дать Сакиб затем показать «Результат состоит из более чем одной строки» Хотя я использовал DISTINCTROW, но тот же ошибка показала У меня есть запрос, это возможно только первичный ключ (например, когда ID = in_id) ?

+0

Вы должны только пометить СУБД, которую используете. sql-server <> mysql –

+0

спасибо, но я новичок, поэтому мне приходится сталкиваться с такой проблемой. –

+0

ха? Комментарий, который я сделал, это то, что вы отметили свой вопрос как sql-server, но очевидно, что вы не используете SQL-сервер. –

ответ

1

Если проверка процедура, если «Сакиб» уже существует, то вы можете использовать «предел 1»:

select dept into in_dept from info where nam=in_name LIMIT 1 

Достаточно появиться один раз, чтобы знать, что она существует :)

0

DISTINCT только дает вам четкие строки. В результате вам нужна одна строка. Попробуйте это

SELECT dept into in_dept FROM info 
    WHERE id IN (SELECT MIN(id) 
         FROM info where nam=in_name 
      ); 
+0

невозможно показать несколько строк? ваш ответ показывает только одну строку output.but я хочу два вывода строки. –

+1

Да, с помощью такой процедуры вы можете вернуть только одно значение, а не курсор, чтобы получить более одного значения. – twyly

+0

Хорошо, я понял это. Спасибо вам большое @twyly –