0

SQL Server でこのコードからテーブルを作成したいのですが、ストアド プロシージャがエラーを返します

CREATE PROCEDURE Recovery_CountryCode (@NombreTabla SYSNAME)
AS
DECLARE @ParamDefinition nvarchar(500);
DECLARE @SQLString nvarchar (4000);
 SET @SQLString=N'SELECT Name
                INTO @TableName
                FROM AdventureWorks2008R2.Production.Location';
SET @ParamDefinition=N'@TableName SYSNAME';
EXECUTE sp_executesql @SQLString, @ParamDefinition, @TableName=@NombreTabla;
GO

テーブルの定義を避けたい

ストアド プロシージャを呼び出すと、次のようになります。

EXEC Recovery_CountryCode @NombreTabla='Paises';

次のメッセージが表示されます。

男性用。102、Nivel 15、Estado 1、Línea 2

4

2 に答える 2

1

プロシージャ内でSQLを連結するだけです

CREATE PROCEDURE Recovery_CountryCode (@NombreTabla SYSNAME)
AS
DECLARE @ParamDefinition nvarchar(500);
DECLARE @SQLString nvarchar (4000);
 SET @SQLString=N'SELECT Name INTO ' + 
                @NombreTabla + 
                ' FROM AdventureWorks2008R2.Production.Location';
EXECUTE sp_executesql @SQLString
GO
于 2012-11-14T22:43:13.193 に答える
0

この方法で変数をテーブル名にバインドすることはできません。次のようなことをする必要があります

Declare @sql nvarchar(max), @NombreTable sysname = 'Test'

Set @sql = N'Select Name Into ' + @NombreTable +
           N' From AdventureWorks2008R2.Production.Location

exec sp_executesql @sql

http://www.sommarskog.se/dynamic_sql.htmlを読むことをお勧めします。

于 2012-11-14T22:43:50.797 に答える