2014-08-06 5 views
0

моя процедура хранения с 4 параметрами типа. I хочу использовать только 3 параметра при вызове хранимой процедуры в php mysql.как вызвать хранимую процедуру с необязательными аргументами

Моя хранимая процедура

DELIMITER $$ 

CREATE PROCEDURE `usptregister` 
(
IN ID bigint, 
IN name varchar(100), 
IN email varchar(100), 
IN phoneno varchar(15) 
) 

BEGIN 

Insert INTO register 
(id,fname, emailid, phone) values 
(id,name , email ,phone) ; 
END 

и мой PHP-код, где я звоню хранимую процедуру, проходящую только 3 параметров.

$call = mysql_query("CALL usptregister('0','".$_POST[name ]."','".$_POST[email ]."') "); 

Этот код работает, когда я передаю то же самое без аргументов, когда вызываю хранимую процедуру. Я новичок в хранимой процедуре .so, пожалуйста, помогите мне.

+0

Не могли бы вы передать четвертый аргумент как null? – gbestard

+0

или пустая строка – edmondscommerce

ответ

0

Дополнительные параметры не поддерживаются MySQL

Я предлагаю вам пройти четвертый параметр как null. Затем в процедуре вы можете проверить, есть ли null или нет.

BEGIN 
    IF param IS NULL THEN 
     -- statements ; 
    ELSE 
     -- statements ; 
    END IF; 
END$$ 

EDIT:

http://bugs.mysql.com/bug.php?id=15975

Хотя запрос на 9 лет он до сих пор не сделано.

+0

это сработает, но если у вас так много аргументов, этот трюк не сработает. i dnt должен передать значение null или строку. – Nisha

+0

и используя ваш трюк для каждого параметра, я должен использовать if и else условие .if u имеет более 30 параметров, тогда вам придется писать его снова и снова. Я сделал это для большой базы данных. – Nisha

+0

Нет другого выбора, вы можете это сделать или вам придется написать процедуру для каждого случая. – gbestard

Смежные вопросы