i found this MySQL 5.1 also supports the execution of a string containing multiple statements separated by semicolon (“;”) characters. This capability is enabled by special options that are specified either when you connect to the server with mysql_real_connect() or after connecting by calling` mysql_set_server_option().
and i saw in hbmysql\mysql.c, there isn´t CLIENT_MULTI_STATEMENTS can someone implements this in hbmysql? /* connect to server with the CLIENT_MULTI_STATEMENTS option */ if (mysql_real_connect (mysql, host_name, user_name, password, db_name, port_num, socket_name, CLIENT_MULTI_STATEMENTS) == NULL) { printf("mysql_real_connect() failed\n"); mysql_close(mysql); exit(1); } /* execute multiple statements */ status = mysql_query(mysql, "DROP TABLE IF EXISTS test_table;\ CREATE TABLE test_table(id INT);\ INSERT INTO test_table VALUES(10);\ UPDATE test_table SET id=20 WHERE id=10;\ SELECT * FROM test_table;\ DROP TABLE test_table"); if (status) { printf("Could not execute statement(s)"); mysql_close(mysql); exit(0); } /* process each statement result */ do { /* did current statement return data? */ result = mysql_store_result(mysql); if (result) { /* yes; process rows and free the result set */ process_result_set(mysql, result); mysql_free_result(result); } else /* no result set or error */ { if (mysql_field_count(mysql) == 0) { printf("%lld rows affected\n", mysql_affected_rows(mysql)); } else /* some error occurred */ { printf("Could not retrieve result set\n"); break; } } /* more results? -1 = no, >0 = error, 0 = yes (keep looping) */ if ((status = mysql_next_result(mysql)) > 0) printf("Could not execute statement\n"); } while (status == 0); Best Regards Fernando Athayde mysql_close(mysql); ________________________________ De: Fernando Athayde <fernando_atha...@yahoo.com.br> Para: harbour@harbour-project.org Enviadas: Quarta-feira, 14 de Abril de 2010 16:08:03 Assunto: [Harbour] tmysql and scripts hello all I can´t run scripts sql using tmysql, I guess my fault, but I can´t see where cScript := "" cScript += "DELIMITER $$"+CHR(10)+CHR(13) cScript += "CREATE DEFINER = `ro...@`%` TRIGGER `lancamentos_fixos_before_ins_tr` BEFORE INSERT ON `lancamentos_fixos` FOR EACH ROW"+CHR(10)+CHR(13) cScript += "BEGIN"+CHR(10)+CHR(13) cScript += ""+CHR(10)+CHR(13) cScript += "IF ( (NEW.idsequencial IS NULL) OR (NEW.idsequencial = 0) ) THEN"+CHR(10)+CHR(13) cScript += "BEGIN"+CHR(10)+CHR(13) cScript += " SELECT MAX(idsequencial) INTO @ultimo_id FROM `lancamentos_fixos` WHERE idserver=NEW.idserver AND idfilial=NEW.idfilial;"+CHR(10)+CHR(13) cScript += ""+CHR(10)+CHR(13) cScript += " IF ((@ultimo_id IS NULL) OR (@ultimo_id=0)) THEN"+CHR(10)+CHR(13) cScript += " BEGIN"+CHR(10)+CHR(13) cScript += " SET NEW.id = CONCAT( NEW.idserver, NEW.idfilial, 1 );"+CHR(10)+CHR(13) cScript += " SET NEW.idsequencial = 1;"+CHR(10)+CHR(13) cScript += " END;"+CHR(10)+CHR(13) cScript += " ELSE"+CHR(10)+CHR(13) cScript += " BEGIN"+CHR(10)+CHR(13) cScript += " SET NEW.id = CONCAT( NEW.idserver, NEW.idfilial, (@ultimo_id + 1) );"+CHR(10)+CHR(13) cScript += " SET NEW.idsequencial = (@ultimo_id + 1);"+CHR(10)+CHR(13) cScript += " END;"+CHR(10)+CHR(13) cScript += " END IF;"+CHR(10)+CHR(13) cScript += ""+CHR(10)+CHR(13) cScript += " END;"+CHR(10)+CHR(13) cScript += " END IF;"+CHR(10)+CHR(13) cScript += "END $$"+CHR(10)+CHR(13) cScript += "DELIMITER ;"+CHR(10)+CHR(13) oServer:query( ALLTRIM( cScript ) ) but happens Error in your sql syntax I tested the code in sql client and runs ok the script DELIMITER $$ CREATE DEFINER = `ro...@`%` TRIGGER `lancamentos_fixos_before_ins_tr` BEFORE INSERT ON `lancamentos_fixos` FOR EACH ROW BEGIN IF ( (NEW.idsequencial IS NULL) OR (NEW.idsequencial = 0) ) THEN BEGIN SELECT MAX(idsequencial) INTO @ultimo_id FROM `lancamentos_fixos` WHERE idserver=NEW.idserver AND idfilial=NEW.idfilial; IF ((@ultimo_id IS NULL) OR (@ultimo_id=0)) THEN BEGIN SET NEW.id = CONCAT( NEW.idserver, NEW.idfilial, 1 ); SET NEW.idsequencial = 1; END; ELSE BEGIN SET NEW.id = CONCAT( NEW.idserver, NEW.idfilial, (@ultimo_id + 1) ); SET NEW.idsequencial = (@ultimo_id + 1); END; END IF; END; END IF; END $$ DELIMITER ; I don´t know how make this, can someone help me? Best Regards Fernando Athayde
_______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour