MYSQL儲存過程執行用字串拼成的sql語句
阿新 • • 發佈:2019-01-29
執行的sql必須定義為 @sql 才能執行 否則報錯
DROP PROCEDURE IF EXISTS test_prepareStam; delimiter // CREATE PROCEDURE test_prepareStam(in id int) BEGIN TRUNCATE TABLE test_table; /* -- 直接拼sql 然後prepare EXECUTE set @exeSql=concat("INSERT INTO test_table (id, val, uv, visitor_val, visitor_uv)VALUES (",id); set @exeSql=concat(@exeSql,", 3,4,6,7)"); -- select @exeSql; prepare stmt from @exeSql; EXECUTE stmt; deallocate prepare stmt; */ /* -- 直接拼sql+? 然後prepare EXECUTE+using set @_id=id; set @exeSql=concat("INSERT INTO test_table (id, val, uv, visitor_val, visitor_uv)VALUES (?, 3,4,6,7)"); prepare stmt from @exeSql; EXECUTE stmt using @_id; deallocate prepare stmt; */ INSERT INTO test_table (id, val, uv, visitor_val, visitor_uv)VALUES (111, 3,4,6,7); INSERT INTO test_table (id, val, uv, visitor_val, visitor_uv)VALUES (112, 3,4,6,7); select * from test_table; END; // -- TRUNCATE TABLE test_table; -- call test_prepareStam(150); -- select * from test_table;