我想检查MySQL db是否存在,以及它是否授予用户权限。
SELECT Count(schema_name)
FROM information_schema.schemata
WHERE schema_name = 'tmx'
INTO @found ;SELECT @found; -- Verified, the result is 1IF (@FOUND == 1) THEN
GRANT
SELECT,
UPDATE
ON tmx.* TO 'my_new_user'@'%';END IF;
当我执行
我试图在Granada查询中实现一个MySQL过程(使用if/语句)。唯一的问题是它不允许我创建我的过程并从同一个查询中调用它.
错误
db query error: Error 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 'CALL tester(true)' at line 44
我确信这个问题与我的语法无关,但下面是查询的外观:
CREAT
在SQL Server中,我可以使用动态sql字符串来实现这一点,但现在我需要对mysql执行同样的操作,但却一无所获,有什么方法可以实现这一点吗
IF NOT EXISTS (SELECT 1 FROM mysql.proc p WHERE NAME = 'stored_proc_name')
BEGIN
DELIMITER $$
CREATE PROCEDURE justATest()
BEGIN
-- some SP logic here
END$$
END
我将整个sql作为字符串存储在数据库列中,并在另一个存储过程中使用预准备语句Exe
我的MySql db中有这样的MySql表。
Id Title RepeatCount
--------------------------
1 Tag1 1
2 Tag2 5
3 Tag3 8
我希望将记录插入到PDO中的表中,如果不存在相同Title的记录(Title是主键),如果存在,则增加记录RepeatCount。
就像这个例子:
prepare(
"IF (:Title IN (SELECT Title FROM tag))
THEN INSERT INTO tag (T
我就是搞不懂为什么这段MySQL代码不能工作。
其目的是检查凭据,如果它们存在,则返回ID,如果不存在,则插入它们并返回ID;
SET @Found = 0;
SELECT Id INTO @Found FROM Users WHERE Users.Username = "testAccount" AND Users.Email = "test@email.com";
IF @Found > 0 THEN
SELECT @Found;
ELSE
INSERT INTO Users VALUES (DEFAULT, "testAc
我有一个包含id和name列的表。
START TRANSACTION;
UPDATE Test SET name='test' where id=1;
SELECT ROW_COUNT() INTO @affected_rows;
IF (@affected_rows > 0) THEN
COMMIT;
ELSE
ROLLBACK;
END IF
它似乎是在返回一个错误
您的SQL语法出现错误;请检查与您的MySQL服务器版本对应的手册,以获得在第1行“IF (affected_rows > 0)然后提交”附近使用的正确语法。
目前正在运行
汇总:DELETE from mysql.proc能否安全地从MySQL 5.7继续使用?
在问题中,有人提到在MySQL中不可能在存储过程中使用DROP PROCEDURE (mysql代码1357,“不能从另一个存储例程中删除或更改%s”)。
根据经验:
DELETE from mysql.proc WHERE db = <db-name> AND name LIKE '<procedure-prefix>%';
反而看起来很好。
在一项评论中,有人问了这个问题(但没有回答):
mysql.proc仍然是与5.7中的MySQL元信息交互的可行方法吗
create procedure insert_income(@title varchar(45),@category varchar(45),@amount float,@date `datetime,@type varchar(45))
as
begin
declare @id int(11)
declare @bal int(11)
set @id= select max(id) from income;
set @bal=select balance from income where id=@id;
if(@category='INCOME')
我正在尝试设置一个进程,在这个过程中,我的团队可以使用变量和基本脚本进行一些常规的DB更改。我只是在许多操作中的第一步,甚至无法让它执行。其思想是在脚本顶部分配变量,并说明是否要在test或prod模式下运行脚本。
test应该只是模拟更改,向您展示会发生什么,然后回滚事务,而prod实际上将提交事务并向您显示更新的行。
当我单独运行这些行时,它们可以工作,但它总是说语法错误。我很乐意帮助调试这个问题,但是如果有人对这个问题有更好的解决方案,我很乐意听到它。
好的,这是开始代码,谢谢提前!
#ADD A NEW QUESTION CATEGORY
SET @new_category_name
我刚开始使用程序,似乎不能让我的程序正常工作。我正在使用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
-
在我安装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
注:此问题的解决方案已附在底部。::)
5.6.17 -使用MySQL控制台的MySQL社区服务器
尝试在mysql控制台中测试此过程。它实际上涉及到许多可能被搜索到的领域。有些值可能被定义为NULL。
我在查询时遇到了错误#1064,该错误涉及第1行的空值。
下面是查询,当我添加@P1 IS NULL测试时,它会中断。我在某个地方看到了这个,但我的一生都找不到它.
SET @p0='46,51,52,1317,1318,1319,1320,1322,1323';
SET @p1='500-000';
CALL `searchCount2`(@p0, @p1
我的存储过程将在第一次调用它时成功运行(无论是通过api还是MySQL工作台),但是第二次或第九次在第一次调用后返回0行。
是什么导致了这种行为?
json_table?
以下是程序:
CREATE DEFINER=`root`@`localhost` PROCEDURE `graphs_characters_rank_bar`()
BEGIN
select
x.*
from
players p
,json_table(p.character_ranks, "$[*]" columns(
rowid for ordinality
我有以下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服务器版本对应的手册,以获得
mysql存储函数:如何选择多个结果并处理它们。例如,
create function hello() return decimal(10,2) determistic begin
select value1, value2 from Foo;
// process multiple rows in result set here
for (....) {
}
end
如何在此代码中使用PHP表单验证?谢谢
<?php
$hostname = ""; // usually is localhost, but if not sure, check with your hosting company, if you are with webune leave as localhost
$db_user = ""; // change to your database password
$db_password = ""; // change to your database password
$databas
SQL 20210309我正在构建一个与运行MySQL 5.7的Google数据库对话的Firebase函数应用程序。我试图从一个表中的一个行中检索一个值,如果它存在(该行或值),则在另一个表中插入一个记录。根据我在网上找到的一些例子,我的代码如下所示:
DECLARE meeting_link varchar(2048) DEFAULT ""; SELECT meeting_link from campaigns where id=2 INTO meeting_link; IF LENGTH(meeting_link) > 0 THEN INSERT INTO clic
在使用JDBC时,我遇到了一个问题,我在mysql中创建了一个包含员工信息Employee_Id、名称、城市、工资和Year_of_joining的表,我还创建了一个存储过程到同一个数据库,该数据库接受两个输入,并根据加入年份更新员工的薪资。以下是存储过程:
CREATE PROCEDURE proc(IN var1, IN var2)
BEGIN
UPDATE "TABLE" SET Salary=var1+Salary WHERE Year_of_Joining= var2
END
现在,我通过java创建了一个数据库连接到mysql数据库(该连接正在成功地建立)。
但
我在Microsoft 2008中有这个特定的问题:
我必须执行一个存储过程,它将以相同的列返回数据,但格式不同:
EXEC Main_SP
@View = .....
IF @View = Yearly,
BEGIN
EXEC SP_Yearly_Data
END
IF @View = Quarterly,
BEGIN
EXEC SP_Quarterly_Data
END
IF @View = Monthly,
BEGIN
EXEC SP_Monthly_Data
END
IF @View = Weekly,
BEGIN
EXEC SP_Weekly_Data
在遵循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
"SELECT ... FOR UPDATE"锁是否加入了MySQL中的行?
如果是的话,是否有可能禁用这种行为?
文档中没有这方面的内容。我已经看到Oracle支持"SELECT ... FOR UPDATE OF table_name",其中table_name是主表,或者是受影响的行将被锁定的连接表之一,但我从未见过在MySQL上下文中提到过这一点。
根据mysql网站,我应该能够使用if语句开始查询。
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
但是当我尝试这个查询时
if (count(1)
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME='tblname'
AND CONSTRAINT_
因此,最初的问题是,在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 .