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
展开
 我来答
七终多E
2012-08-24 · TA获得超过1.4万个赞
知道大有可为答主
回答量:3756
采纳率:46%
帮助的人:3390万
展开全部
一楼的意思是你必须告诉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'
)
。。。
追答
会不会是权限问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柴沛文00K
推荐于2016-10-30 · TA获得超过635个赞
知道小有建树答主
回答量:1203
采纳率:0%
帮助的人:188万
展开全部
you need to specify the database name at first, such as,
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']
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式