我刚开始使用程序,似乎不能让我的程序正常工作。我正在使用WAMPP v5.1.36,并使用MySQL服务器上的MySQL控制台输入代码。如果我去(重新)创建这个过程。我得到错误#1304 (42000)。
mysql> DELIMITER //
mysql>
mysql> CREATE PROCEDURE modx.getCRID (IN x VARCHAR(255),OUT y INT)
-> BEGIN
-> DECLARE y INT;
-> SELECT id INTO y
-
因此,我有以下查询:
IF ( ( SELECT RevisionNumber FROM SchemaVersion ) > 1 ) THEN BEGIN
CREATE TABLE Test ( ID INT );
CREATE TABLE Test2 ( ID INT );
END;
END IF
基本上,我希望根据表中的值(SchemaVersion -总是有1行)来决定是否需要进行某些更改。
但是,当我使用此查询时,我得到以下错误消息:
#1064 - You have an error in your SQL syntax; check the manual th
我有一个mysql表,它附带了一个触发器,它将这个表中的更改记录到第二个表中。
CREATE TRIGGER log_table BEFORE UPDATE ON table1
FOR EACH ROW BEGIN
INSERT INTO log_table(filed) VALUES(NEW.field);
END;
//
现在,如果我从PHP中执行对table1的插入,那么随后调用mysqli_insert_id()。
这会返回table1中的新ID吗?还是log_table中的新ID?
下面是我的代码:
DELIMITER $$
begin
declare var a int;
set a="select biology from app.students where studname="ganesh";
select concat('the student name is' a);
end$$
我想在mysql中为java创建storeprodure。在上面的代码中,我在begin之后给出了任何东西,它显示了错误。我对存储过程不太在行。
我正在尝试学习一些新的MySQL语法的诀窍,并且遇到了麻烦。这应该很简单。
下面是手册:
但我一直有语法错误。这是我的例行公事
# Drop anonymous accounts, if any
USE mysql;
CASE (SELECT COUNT(*) FROM user WHERE User = '' AND Host = 'localhost')
WHEN 1 THEN
DROP USER ''@'localhost';
FLUSH PRIVILEGES;
END CASE;
错误是:
错误1064 (
我有以下MYSQL查询:
START TRANSACTION;
SELECT sport_id INTO @a FROM sports WHERE sport_id = 2 FOR UPDATE;
UPDATE sports SET sport_name = 'Table Tennis' WHERE sport_id = @a;
if (@a > 1) then
COMMIT;
ELSE
ROLLBACK;
END IF;
问题是它在if语句处返回一个错误:
#1064 -您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得
查询中出错:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法,请在第1行的'IF EXISTS(SELECT flag FROM check customerID= '6767') SELECT flag‘中使用
这个查询没有接近第1行,所以我不确定错误是什么。有人能给点建议吗?:)
<?php
$db_link = mysql_connect('localhost', 'secrets', '') or die('Could not connect to the
我需要调用一个在触发器中修改根密码的过程。这就是程序
delimiter //
create procedure foobar ()
begin SET PASSWORD FOR 'root'@'localhost' = 'foobar';
end//
delimiter ;
这就是扳机
delimiter //
create trigger rootpass
after delete on map
for each row
begin
call foobar;
end //
delimiter ;
语法似乎是正确的,但是当我启动删除时,我会得到
在遵循MySQL的IF语法指南时,我得到了一个语法错误。
我的问题是:
if 0=0 then select 'hello world'; end if;
从逻辑上讲,这应该选择'hello world',但是我得到了
ERROR 1064 (42000): 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 'if (0=0) then s
因此,最初的问题是,在MySQL工作台中,我试图修改过程,却一无所获。没有错误只是什么都没发生。结果是,尽管对模式具有完全的权限,因为存储过程的定义者不是我,但我无法查看它的源代码。
设想情况:
Database: Bugs
Users: A, B
Permissions:
grant all privileges on bugs.* to 'A'@'%'
grant all privileges on bugs.* to 'B'@'%'
用户A创建存储过程
create procedure user_A_procedure .
我正在使用MySQL,我想使用一个"with“语句来读取查询中另一个存储过程的输出,但是当我试图在"with”语句中使用"CALL sp_2()“时,它会抛出一个异常。
这个很好用:
CALL sp_2(user_input);
但这个不是:
WITH A AS (CALL sp_2(user_input))
SELECT * FROM A;
我是不是做错了什么,或者MySQL真的不允许"WITH“语句使用其他存储过程?还有别的解决办法吗?
我试图在MySQL (5.x)的WHERE语句中使用存储函数的结果,但它失败了,因为在函数中,我从表中选择值到一个整型变量中,然后返回它们/ it,如果SELECT返回超过1行,这显然不起作用。我尝试过返回表(据我所知,MySQL中的TABLE表示数组),但也不起作用。
有没有办法让我这样做:
SELECT ID FROM myTable WHERE ID IN my_function(params);
谢谢。
我有下面的扳机,真是烦死我了。
我想在触发器中进行更新,但是MySQL不允许它,因为“触发”触发器的语句是指参与者表。
我能做些什么才能让它发挥作用?我考虑过存储过程,但在这种情况下也是禁止的。
逻辑是:我有一张有与会者参加会议的桌子。如果来自'vip‘组的人出席,那么来自'tap’组的人应该始终接受邀请这一不变条件。在这种情况下,如果有“贵宾”出席会议,我必须更新的所有“点击”出席情况,但这怎么可能?
DELIMITER $$
CREATE TRIGGER tap_meet_vip
BEFORE INSERT ON participants
FOR EACH ROW BEG
我试图用mySQL来处理函数,我目前正在做一个检查列account_description及其值的函数,以查看描述是否已经存在。
如果它已经存在,则显示一条这样的消息。但是,如果描述不存在,则显示另一条消息,说明找不到它。
谢谢!
MySQL代码:
DROP FUNCTION IF EXISTS test_glaccounts_description
DELIMITER //
CREATE FUNCTION test_glaccounts_description
(
check_description VARCHAR(50)
)
RETURNS VARCHAR(50)
BEGIN
我做了一个带有in和out参数的过程:
delimiter //
DROP PROCEDURE IF EXISTS empInfo ;
CREATE PROCEDURE empInfo (tblname VARCHAR(50),
clName VARCHAR(50),
out total INT)
BEGIN
SET @s = CONCAT("SELECT count(", clName ,") into total FROM ", tblname );
我在java中有一个函数,它使用可调用语句,并用单词"call“在MySQL中调用模式的函数。效果很好。
但是,如果在我的sql中我写:
call myFunction(); ( in this case :call getNumberOfIdeasDB();)
我不知道怎么做:
程序..。根本不存在。
我觉得奇怪的是,它在Java中工作,但在MySQL中却不起作用。你能不能帮我弄明白为什么。
这是我在Java中的函数,即使是我不认为与之相关的函数。
public static double getNumberOfIdeasDB() {
Connection co =
我可以在mysql函数中调用存储过程吗?我试过了,但它抛出语法错误。有可能吗?
DELIMITER $$
DROP FUNCTION IF EXISTS `fn_abcd`$$
CREATE FUNCTION `fn_abcd`(orderItem BIGINT(45),quantity INT) RETURNS double
BEGIN
DECLARE TotalNetValue DOUBLE;
set TotalNetValue = call sp_abcd(orderItem,quantity);
RETURN TotalNetValue;
END$$
在我安装phpmyadmin的过程中,SQL选项卡没有处理IF In语句。但是,它确实正确地处理IF()函数。例如,这可以很好地工作:
SET @thisyear = IF(YEAR(CURRENT_DATE) = 2018, 2018, 2019);
SELECT @thisyear AS ThisYear, `foobar`.`id` AS ID ...
但是,以下内容会产生一个错误:
IF year(CURRENT_DATE) = '2018' THEN
SET @thisyear = '2018';
END IF;
SELECT
我试图用mysql连接器来修改实体框架6中的表。
错误是:
PM> update-database -verbose
Using StartUp project 'Facade'.
Using NuGet project 'DAL'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'GiveAndGet' (DataSource: localhos
我正在尝试从我的数据库中的MySQL 中获取以下语句
DECLARE no_such_table CONDITION FOR SQLSTATE '42S02';
但是,我继续得到以下错误:
ERROR 1064 (42000): 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 no_such_table CONDITION FOR SQ
我使用Docker在一个Linux容器中运行MySQL 8.0.26。
我试图通过从employees数据库中的一个名为employees的表中无限地选择数据来运行压力测试。为此,我将在SELECT循环中嵌入一个WHILE语句,并使用始终返回true的搜索条件。
我试图使用MySQL工具针对MySQL引擎发出以下查询。
WHILE 1=1 DO
SELECT * FROM employees.employees;
END WHILE;
运行此查询时,将收到如下错误消息。
调用远程方法'DB_EXECUTE_CANCELLABLE_QUERY':错误:您的SQL语法有错误;
有没有人能告诉我我哪里错了
CREATE OR REPLACE FUNCTION ttestt (url varchar(255)) RETURNS VOID AS
BEGIN
DECLARE @IMAGE_ID INT
INSERT INTO images(url,ajoute_par) VALUES ("http://www.example.com","3")
SET @IMAGE_ID = SCOPE_IDENTITY()
INSERT INTO Dossier(nom, etat, dossierImage) VALUE