Member 11040029 Ответов: 1

Как использовать переданные параметры хранимой процедуре в запросе select с именем параметра, совпадающим с именем Поля в запросе select


Вот моя хранимая процедура:

CREATE PROCEDURE DuplicationCheckAccountLedger (IN aname varchar(50), OUT errflag bit, OUT errFieldName varchar(10))
BEGIN
	declare cnt int default 0;
	select count(name) into cnt from account_ledger where name = aname;	
	if cnt = 0 
	then		
		set errflag = 0;
		set errFieldName = 'none';
	else 
		set errflag = 1;
		set errFieldName = 'name';
        end if;
end //


Вместо того чтобы передавать поле name как "aname", я хотел бы передать его только как "name". Запрос хотел бы читать так:
выберите count (name) в cnt из account_ledger, где name = name;

Но я знаю, что есть некоторая проблема с приведенным выше запросом, что левая и правая стороны всегда будут равны, так как select query будет ссылаться на поле таблицы для обоих.

Существует ли какой-либо префикс, который будет использоваться для таких сценариев, как что-то " это " оператор, как мы используем в c#?

Что я уже пробовал:

Я попробовал погуглить эту штуку.. но я не нахожу хорошего ключевого слова для поиска этого запроса.

1 Ответов

Рейтинг:
1

#realJSOP

Используйте точечную нотацию для полей таблицы:

select count(1) into cnt from account_ledger where account_ledger.name = aname;	


Member 11040029

Привет, Джон, точечная нотация будет анализировать левое поле как поле таблицы, но поле с правой стороны поля " имя " также будет анализироваться как поле той же таблицы, а не как параметр.
Я хотел бы иметь select query as:
выберите count (1) в cnt из account_ledger, где account_ledger.name = имя;
вместо этого
выберите count (1) в cnt из account_ledger, где account_ledger.name = анаме;

мое имя столбца и имена переменных совпадают.
Вот структура таблицы:
создать таблицу account_ledger
(ID mediumint первичный ключ,
имя varchar (50) уникальный ключ
) Engine = InnoDB charset = utf8;