php - MySQL Stored Procedure Creation with Input and Output Parameters -



answer: https://stackoverflow.com/a/24034862/1173155


i testing stored procedure follows:

delimiter $$ create procedure `test1`(in `tab_name` varchar(40), in `value_of` varchar(40), out `the_id` int(1)) begin  set @t1=concat('     begin          if exists (select ',tab_name,'.id ',tab_name,' ',tab_name,'.',tab_name,' = ',value_of,')                         select id ',the_id,' ',tab_name,' ',tab_name,'.',tab_name,' = ',value_of,';         else              insert ',tab_name,' values (null,',value_of,'); end if;');  prepare stmt3 @t1;  execute stmt3;  deallocate prepare stmt3; end $$ delimiter ; 

trying select id, or insert. have single row in table, when try , use procedure is; doesn't return anything.

the identifier value want table name simplicities sake. have spent many hours , i'm @ loss.

have tried everything, thought adding null, work table has 2 values , had forgotten put in realise trying within first if clause... ie, entering data ensure first statement invoked

thanks help


update

still having trouble this. trying make simple possible now.

i have city table, 1 record in. structure city.city = 'dublin'

value , table name same. follow select statement works when executed via phpmyadmin

begin      set @t1= concat("           select id               ",tab_name,"                       ",tab_name," = '",value_of,"'                        ");      prepare stmt3 @t1;      execute stmt3;      deallocate prepare stmt3; end 

now need ensure if select statement doesn't return anything, insert value , return select statement.

this seems such simple problem, yet can't find solution anywhere

--

insert ignore not because increments id regardless of inserting. there work around because use then.

insert ignore... // without increment?

select ^ ....


further update

my procedure looks (takes 2 varchar parameters) , working. doesn't increment id if value exists either fantastic.

begin  set @t1= concat("insert ",tab_name,"(",tab_name,") select '",city_name,"' dual  not exists (select 1      ",tab_name,"       ",tab_name," = '",city_name,"');         ");    prepare stmt3 @t1;      execute stmt3;      deallocate prepare stmt3;     end 

all want simple select statement return id of row city name. eg select id tab_name tab_name = 'city_name';

but adding in causes error :( if has solution ridiculous problem

the statement wrote should not return results. both select , insert statements not return results.

it's stored procedure.

do select first, follow insert(s). select first output result set of procedure.


Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

thorough guide for profiling racket code -