如何在特定数据库中创建存储过程
How create stored procedure in specific database
我想在使用变量名创建数据库时创建存储过程。
为了创建我的数据库,我在脚本的顶部写了 USE [master] GO
。
在我想在我的新数据库中创建我的存储过程之后,我不能像这样在我的查询中指定数据库:
DECLARE @DB_NAME sysname
select @DB_NAME = valeur from #vars WHERE nom = 'DB_NAME' /*Nom de la base de données*/
SET @SqlCommand = 'CREATE PROCEDURE '+ @DB_NAME +'.[dbo].[sp_DEFRAG_Index]
@Pourcent int = 30.0
AS BEGIN
错误:
Msg 166, Level 15, Status 1, Line 317
'CREATE/ALTER PROCEDURE' does not allow specifying the database name as a prefix to the object name.
您可以动态调用sp_executesql
,即:您可以创建一个包含'DB_NAME.sys.sp_executesql
的值然后调用EXEC @name @params
DECLARE @DB_NAME sysname;
select @DB_NAME = valeur
from #vars
WHERE nom = 'DB_NAME'; /*Nom de la base de données*/
DECLARE @SqlCommand nvarchar(max) = '
CREATE PROCEDURE [dbo].[sp_DEFRAG_Index]
@Pourcent int = 30.0
AS
';
DECLARE @spexecute nvarchar(1000) = QUOTENAME(@DB_NAME) + '.sys.sp_executesql';
EXEC @spexecute @SqlCommand;
我想在使用变量名创建数据库时创建存储过程。
为了创建我的数据库,我在脚本的顶部写了 USE [master] GO
。
在我想在我的新数据库中创建我的存储过程之后,我不能像这样在我的查询中指定数据库:
DECLARE @DB_NAME sysname
select @DB_NAME = valeur from #vars WHERE nom = 'DB_NAME' /*Nom de la base de données*/
SET @SqlCommand = 'CREATE PROCEDURE '+ @DB_NAME +'.[dbo].[sp_DEFRAG_Index]
@Pourcent int = 30.0
AS BEGIN
错误:
Msg 166, Level 15, Status 1, Line 317
'CREATE/ALTER PROCEDURE' does not allow specifying the database name as a prefix to the object name.
您可以动态调用sp_executesql
,即:您可以创建一个包含'DB_NAME.sys.sp_executesql
的值然后调用EXEC @name @params
DECLARE @DB_NAME sysname;
select @DB_NAME = valeur
from #vars
WHERE nom = 'DB_NAME'; /*Nom de la base de données*/
DECLARE @SqlCommand nvarchar(max) = '
CREATE PROCEDURE [dbo].[sp_DEFRAG_Index]
@Pourcent int = 30.0
AS
';
DECLARE @spexecute nvarchar(1000) = QUOTENAME(@DB_NAME) + '.sys.sp_executesql';
EXEC @spexecute @SqlCommand;