我有这个问题,我在php中创建了一个用户定义的函数。但它有一些problems.Let me的详细说明。假设我已经创建了这个函数
<?php
include 'db_connect.php';
$sql="DROP FUNCTION IF EXISTS testf";
$result=mysql_query($sql) or die (mysql_error());
$sql="CREATE FUNCTION testf() RETURNS text
DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE Out
我每天都在尝试创建一个存储过程,其中包含一个游标,并根据另一个表的数据填充我的一个表。
我认为我在语法上做错了什么,我已经用游标编写了一个简单的存储过程,它完全正确,但是当它变得更复杂时,它就不再工作了。我得到了
Error Code: 1064. You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near 'DECLARE brandId int ;' at line
我发现这个函数用于大写字符串中单词的第一个字母,但是当我尝试在PHPMyadmin中用SQL运行它时,它在第8行出现了语法错误。有人能帮我找出问题出在哪里吗?代码如下:
CREATE FUNCTION CAP_FIRST (input VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE len INT;
DECLARE i INT;
SET len = CHAR_LENGTH(input);
SET input = LOWER(input);
SET i = 0;
WHILE (i < len) DO
我不知所措,我看不出像这样简单的事情不起作用的原因:
CREATE PROCEDURE test()
BEGIN
DECLARE var INT;
SET var = 0;
END
我真的只是在测试这个,因为我似乎根本无法创建任何东西。我得到的错误消息是:
查询1中的错误您的SQL语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以便在第3行使用正确的语法
第3行是DECLARE语句。有什么想法吗?
Create procedure Movestaff (input_staffID smallINT, new_deptID tinyINT)
BEGIN
declare old_deptID tinyINT;
start transaction;
select departmentID into old_deptID from staff where staffID=input_staffID;
update staff set departmentID = new_deptID where staffID=input_staffID;
update department set
正如您所知道的,小型版本的MariaDB (5.5-)应该与MySQL兼容(我已经发现了缺陷,但他们说它的90%)。我在我们的环境中都使用MySQL,在AWS上使用MySQL,在本地Dev服务器和Dev盒上使用Maria。我目前正试图破解一个函数,该函数将自动生成带有随机数据的行。
表的结构将非常简单,如下所示
DROP DATABASE IF EXISTS `foodb`;
CREATE DATABASE `foodb`;
USE `foodb`;
DROP TABLE IF EXISTS `footable`;
CREATE TABLE `footable` (
`id` int(1
我的代码中有以下错误:
MySQL说:文档
1064 -您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在第20行使用接近“END”的正确语法。
CREATE PROCEDURE updateUser(
IN firstname VARCHAR(20),
IN Vlastname VARCHAR(20),
IN Vemail VARCHAR(50),
IN Vpassword VARCHAR(100),
IN Vyear INT(5),
IN Vgender VARCHAR(10),
IN Vpr
我正在用mysql编写一个存储过程,它只返回提供了ID的行,或者在没有提供ID的情况下返回所有表。
CREATE DEFINER=`root`@`localhost` PROCEDURE `SLICE_GET`(`slice_id` int)
BEGIN
SELECT *
FROM `thesis_db`.`SLICE_INFO`
WHERE (SLICE_ID = `slice_id` OR `slice_id` IS NULL);
END
我已经在ms-sql中使用了很多年了,但它似乎不适用于mysql,因为无论传递哪个ID,该过程都会返回整个表。这里我漏掉了什么?
我正在使用以下sql:
DELIMITER $$
DROP PROCEDURE IF EXISTS `get_auto_increment_settings`$$
CREATE PROCEDURE `get_auto_increment_settings`()
BEGIN
select @@global.auto_increment_offset as 'offset', @@global.auto_increment_increment as 'increment' ;
END $$
DELIMITER ;
我将它存储在db_auto_in
我在工作台中编写了一个简单的mysql存储过程,但是,它报告语法错误。我的语法有什么问题?
CREATE DEFINER=`root`@`localhost` PROCEDURE `SelectIndicatorsByExistReferenceID`()
BEGIN
select * from indicators;
END
CREATE TRIGGER event_house_dealed AFTER UPDATE ON house FOR EACH ROW
BEGIN
DECLARE finished INT;
IF NEW.isdeal = 1 THEN
SET finished = 1;
END IF;
END;
MySQL服务器一直在说
SQL错误(1064):您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得在第1行使用“IF NEW.isdeal =1然后设置finished =1”的正确语法。
谢谢。
有给出前所未见的错误的声明,他们试图找到解决方案。与之前使用相同语法但不抛出任何错误的过程一样奇怪 这适用于一个过程,该过程使用游标从表中检索信息,然后将其插入到另一个表中,这样做的目的是使用其中的信息来计算合计,该合计与一些所需的值一起传递 BEGIN
DECLARE fin INT DEFAULT FALSE;
DECLARE pol VARCHAR(30) default '';
DECLARE total_accrued decimal(20,2) DEFAULT '0.00';
DECLARE total_pa
我正在创建选择member_id在courser.member_id中有超过100000条记录的过程。我已经声明了一个变量I,它存储了一个成员id,然后用下一个查询更新它。
有人能解决这个问题吗..?程序如下:
DELIMITER //
DROP PROCEDURE IF EXISTS Mock_test_1()
CREATE PROCEDURE Mock_test_1()
BEGIN DECLARE i int unsigned;
DECLARE curs1 CURSOR FOR select member_id from clie
为了将存储过程作为一个整体传递给服务器,我们声明了一个新的分隔符,它不允许MySQL一次解释一个语句。所以,我们的程序看起来应该是:
delimiter $$
create procedure some_procedure()
begin
insert into table1 select * from table2;
select * from table1;
end $$
delimiter ;
请注意,实际上有两个“事物”分组我们的代码库。它们是开始-结束关键字和$$ delimeter.我的问题是为什么我们需要他们,这不是多余的吗?
如果有人计划回答因为存储过程的语法我们必须指定开始-
我想知道您是否可以告诉我ff sql语句有什么问题:
insert into translog
select * from transponder_logs where trans_log_id < 150000;
delete from transponder_logs where trans_log_id < 150000
这个语句在sql中运行得很好,但是当我在event scheduler上使用它时,它会给我一个语法错误。
错误信息是:
“您的SQL语法出现了错误;请检查与mysql服务器版本对应的手册,以便在第3行的'delete from transpo
我在为MySQL的案例陈述而挣扎。我想在一个过程中使用它,但是我得到了一个错误(#1064 --您的SQL语法中有一个错误;每次我尝试创建这个过程时,请检查与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在第4行使用near‘at’)。我尽可能地简化了程序,以避免与案例陈述无关的其他错误。这就是我目前正在尝试的:
drop PROCEDURE if EXISTS test;
create PROCEDURE test()
BEGIN
CASE
when true THEN INSERT INTO testtable VALUES (DEFAULT);
end case;
END
我是MySql的新手,我的存储过程有问题。我正在尝试为插入创建一个新的sp,例如:
CREATE DEFINER = CURRENT_USER PROCEDURE
`NewProc`
(
IN `PCountryId` binary(16),
IN `PCountryName` varchar(50),
IN `PCountryLongitude` float,
IN `PCountryLatitude` float
)
BEGIN
INSERT INTO
country
(
CountryId
对于环境来说,我有一个问题,就是我的代码末尾增加了一行。我所遵循的指南是:
如果有人对MySQL存储过程有更好的建议,我会全神贯注的。
之前,我使用的环境是: OS: Windows 7/ WAMP (MySQL 5.5.24) / MySQL工作台
我被指示定义一个分隔符;在我的例子中,我坚持默认的‘$$’。
我创建的存储过程是:
DELIMITER $$
CREATE PROCEDURE test.`p2` ()
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in t
我有一段代码:
BEGIN
DECLARE @NewLine CHAR(2)
SET @NewLine = CHAR(13)+CHAR(10)
END
当我在phpmyadmin中运行它时,我得到这个错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE @NewLine CHAR(2) SET @NewLine = C
从这里所以。我和DELIMITER搞混了。我还尝试了以下几种方法:
CREATE EVENT test
ON SCHEDULE EVERY 2 MINUTE
DO
BEGIN
SELECT 1;
SELECT 2;
END
这让我犯了一个错误,就像刚才提到的问题:
错误代码: 1064您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得在第5行附近使用的正确语法。
如果我运行以下sql:
DELIMITER $$
CREATE EVENT test
ON SCHEDULE EVERY 2 MINUTE
DO
BEGIN
SELECT 1;
SELECT 2;
E
CREATE PROCEDURE search
@id INT
AS
BEGIN
SET NO COUNT ON;
SELECT cteachID,
cfname,
cmname,
clname
FROM tbl_teacher
WHERE cteachID = @id
END
MySQL说:文档
1064 -您的SQL语法有一个错误;请检查与您的MariaDB服务器版本相对应的手册,以获得正确的语法,在第2行使用“@id INT作为开始设置不计数”。
我正试图在db-fiddle.com ()上创建一个存储过程,但我在弄清楚如何处理我的DELIMITER语句时遇到了麻烦。
我已经在Schema端构建了表和存储过程代码,并尝试从查询端调用存储过程。
DELIMITER //
CREATE PROCEDURE conservation_count (IN con INT)
BEGIN
DECLARE ytotal INT;
SET ytotal := 0;
SET ytotal := (SELECT COUNT(*) FROM Species, Animals
WHERE Spe
我是MYSQL的新手,在执行过程中遇到了一些问题。它在SQLVersion5.7.28中运行得很好,但在SQL5.6.41中抛出了以下错误
ERROR:
SQL query:
create procedure menus_hier_upward
(
in p_menu_id smallint unsigned
)
begin
declare v_done tinyint unsigned default(0)
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual
这是我的数据库服务器信息
服务器类型: MySQL服务器版本: 5.7.16 - MySQL社区服务器协议版本: 10
我运行下面的代码,并得到一个错误信息。
CREATE PROCEDURE dowhile()
BEGIN
DECLARE v1 INT DEFAULT 5;
WHILE v1 > 0 DO
SET v1 = v1 - 1;
END WHILE;
END;
I got an error messate: #1064 - You have an error in your SQL syntax; check the manual that corre
在phpMyAdmin上与mysql合作
SQL:
drop PROCEDURE if EXISTS mi;
CREATE PROCEDURE mi() //<-- line 3
BEGIN
INSERT INTO User ( `name` , `password` ) VALUES ('value1', 'value2');
SET out_param = LAST_INSERT_ID();
END
CALL mi();
“drop”用于多个测试。
我们有User桌,有id primary key,name varchar,passwor
我试图在mysql数据库中创建过程--这个过程将把帐户从表移到另一个表--这是我的过程,但是语法有错误
CREATE PROCEDURE radius.archive_acct()
BEGIN
INSERT INTO radacctold
SELECT * FROM radacct
WHERE acctstoptime > 0
AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
DELETE FROM radacct
WHERE acctstoptime > 0
AND date(acctstartti