在从给定数据库中检索所有表名时,它在'GO'附近给出错误的“不正确的语法”。 [英] While retrieving all table name from given database it gives error "incorrect syntax near 'GO'."

查看:78
本文介绍了在从给定数据库中检索所有表名时,它在'GO'附近给出错误的“不正确的语法”。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的存储过程



  ALTER   PROCEDURE  [dbo]。[sp_GetTableName]   -    @ Database ='dbTask ' 
@ Database nvarchar (max)
AS

BEGIN
声明 @ a nvarchar (max)
声明 @ b nvarchar (max)
声明 @ c nvarchar (max)
声明 @ query nvarchar (m ax)
set @ a = ' USE ' + ' ' + @ Database
set @ c = ' GO'
set @ b = ' SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES'
set @ query = @ a + CHAR 13 )+ @ c + CHAR 13 )+ @ b
exec @query
- print(@query)
END





我尝试了什么:



i想得到特定数据库中的所有表名

解决方案

您不能在存储过程中使用GO - 它表示批处理结束。只需从动态SQL中删除它

  ALTER   PROCEDURE  [dbo]。[sp_GetTableName]   -    @ Database ='dbTask' 
@ Database nvarchar (max)
AS

BEGIN
声明 @ a nvarchar (max)
声明 @ b nvarchar (max)
声明 @ query nvarchar (max)
set @ a = ' USE' + ' ' + @ Database
set @ b = ' SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES'
set @ query = @ a + CHAR 13 )+ @ b
exec @query
- print(@query)
END





这是文档的链接备份我的声明 GO(Transact-SQL) [< a href =https://msdn.microsoft.com/en-us/library/ms188037(v=sql.110).aspx\"target =_ blanktitle =New Window> ^ ]


This is my stored procedure

ALTER PROCEDURE [dbo].[sp_GetTableName]--@Database='dbTask'
	@Database nvarchar(max)
AS

BEGIN
declare @a nvarchar(max)
declare @b nvarchar(max)
declare @c nvarchar(max)
declare @query nvarchar(max)
	set @a='USE'+' '+ @Database 
	set @c='GO'
	set @b='SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES'
	set @query=@a+ CHAR(13)+@c+ CHAR(13)+ @b
exec (@query)
--print (@query)
END



What I have tried:

i want to get all table name from specific database

解决方案

You can't use GO in a stored procedure - it indicates the end of a batch. Just remove it from your dynamic SQL

ALTER PROCEDURE [dbo].[sp_GetTableName]--@Database='dbTask'
	@Database nvarchar(max)
AS
 
BEGIN
declare @a nvarchar(max)
declare @b nvarchar(max)
declare @query nvarchar(max)
	set @a='USE'+' '+ @Database 
	set @b='SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES'
	set @query=@a+ CHAR(13)+ @b
exec (@query)
--print (@query)
END



[Edit] Here is a link to the documentation to back up my statement GO (Transact-SQL)[^]


这篇关于在从给定数据库中检索所有表名时,它在'GO'附近给出错误的“不正确的语法”。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆