mysql数据库的储存过程中执行select语句结果为no database selected
在MySQL中执行以下SQL语句,为什么结果为nodatabaseselected?可是明明有test数据库的。在储存过程以外执行这个select语句就有结果。CREAT...
在MySQL中执行以下SQL语句,为什么结果为no database selected?可是明明有test数据库的。在储存过程以外执行这个select语句就有结果。
CREATE PROCEDURE CREATETEST
AS
BEGIN
IF EXISTS (
SELECT * FROM information_schema.schemata
WHERE information_schema.schemata.schema_name = 'test'
)
THEN
DROP DATABASE test
END IF
END 展开
CREATE PROCEDURE CREATETEST
AS
BEGIN
IF EXISTS (
SELECT * FROM information_schema.schemata
WHERE information_schema.schemata.schema_name = 'test'
)
THEN
DROP DATABASE test
END IF
END 展开
2个回答
展开全部
一楼的意思是你必须告诉mysql编译器你选择了哪个数据库操作 这个一定要先use databasename 然后才能执行相关的语句的
更多追问追答
追问
在控制台不用use一样可以执行那个select语句,我在存储过程里加上也不行。
CREATE PROCEDURE CREATETEST
。。。
use information_schema
IF EXISTS (
SELECT * FROM information_schema.schemata
WHERE information_schema.schemata.schema_name = 'test'
)
。。。
追答
会不会是权限问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
you need to specify the database name at first, such as,
use Test,
then your query
use Test,
then your query
更多追问追答
追问
information_schema.schemata
不是已经指定数据库名了么?
追答
Very good question, try this, use like instead of = to see it is working or not.
What is the result when you do,
Show databases 'test'
Does it show anything
Show databases [like 'test']
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询