2016-06-21 9 views
0

SQLserver 2008を使用しています。複数のレコードをテーブルに挿入するストアドプロシージャを作成しました。しかし、私は入力パラメータとしてテーブル名を渡すことができません。SQLサーバーストアドプロシージャへの入力パラメータとしてのテーブル名の受け渡し

C:\Program Files\Microsoft SQL Server\100\Tools\Binn>SQLCMD.EXE -v DbName="Gannu" 
startn="90" endn="180" tabn="Sandeep" -i U:\SSHScript\recvariable.sql 
Changed database context to 'Gannu'. 
Msg 126, Level 15, State 1, Server BRANCH1_WIN, Line 6 
Invalid pseudocolumn "$tabn". 

などのエラーを取得

USE $(DbName) 
GO 
DECLARE @command varchar(1000),@i int, @tabname as varchar(100) 
set @tabname = $(tabn) 
set @i = $(startn) 
while @i < $(endn) 
BEGIN 
SET @command = 'Insert into '+($tabn)+'(Name,Address) Values("Act'+ CAST(@i AS varchar) +'","Place '+ CAST(@i AS varchar) +'")' 
EXEC (@command) 
SET @i = @i + 1 
END 
Go 

誰かがこの上で私を助けることができますか?

答えて

0

私は変数の場所でいくつかのデータを使って上記のクエリを実行することができました。

唯一、私には問題が見つかった値法、プレイスの二重引用符( ")を使用することでした。二重引用符は動作しません。あなたがそこに単一引用符が必要です。

USE VAIBHAVDB 
if OBJECT_ID('MyTable', 'U') is not null 
drop table MyTable 
Go 
create table MyTable (name varchar(500), address varchar(500)) 
GO 
DECLARE @command nvarchar(1000),@i int, @tabname as varchar(100) 
set @tabname = 'MyTable' 
set @i = 1 
while @i < 5 
BEGIN 
SET @command = 'Insert into '[email protected] +'(Name,Address) Values('+ '''' + 'Act' + CAST(@i AS varchar) + '''' +' ,'+''''+'Place '+ CAST(@i AS varchar) +''''+')' 
PRINT @command 
EXEC (@command) 
SET @i = @i + 1 
END 
Go 
1

これはあなたの問題を解決する必要があります

USE $(DbName) 
GO 
DECLARE @command varchar(1000),@i int, @tabname as varchar(100) 
set @tabname = '$(tabn)' 
set @i = $(startn) 
while @i < $(endn) 
BEGIN 
SET @command = 'Insert into ' + @tabname + '(Name,city) Values("Act'+ CAST(@i AS varchar) +'","Place '+ CAST(@i AS varchar) +'")' 
EXEC (@command) 

SET @i = @i + 1 
END 
Go 

C:\ Program Files \ MicrosoftのSQLサーバ\ 100の\ツール\ Binnの> SQLCMD.EXE -v DBNAME = "Gannu" のTABn = "バーラト" startn = "20" ENDN = "25" -i T:¥SSHScript¥validate.sql

Chan gedのデータベースコンテキストを 'Gannu'に変換します。

(1行が該当)

関連する問題