をご覧ください。私は一時テーブルに格納されているストアドプロシージャを実行する必要があります。私は2つのテーブルを持っています:selectとsp_executesqlの関係は?
create table pruebaa
(
cam1 integer primary key,
cam2 varchar(20)
)
insert into pruebaa (cam1, cam2) values (1, 'valor1');
insert into pruebaa (cam1, cam2) values (2, 'valor2');
insert into pruebaa (cam1, cam2) values (3, 'valor3');
insert into pruebaa (cam1, cam2) values (4, 'valor4');
insert into pruebaa (cam1, cam2) values (5, 'valor5');
insert into pruebaa (cam1, cam2) values (6, 'valor6');
create table pruebab
(
cam1 integer primary key,
cam2 varchar(20)
)
私はテーブルBに保存する必要がありますが、ストアドプロシージャです。
create procedure insertapruebab(@cam1_ex int, @cam2_ex varchar(20))
as
begin
insert into pruebab(cam1, cam2) values (@cam1_ex, @cam2_ex);
end
create table #querysEjecutar(
campo1 varchar(2000)
)
insert into #querysEjecutar(campo1) (select ' exec insertapruebab '+ CONVERT(varchar(20), cam1) + ', ' + CONVERT(varchar(20), cam2) from pruebaa);
declare @campoquery nvarchar(2000);
set @campoquery = 'select campo1 from #querysEjecutar';
exec sp_executesql @campoquery;
select * from pruebab;
しかしラインで
"幹部sp_executesqlを" 結果は次のとおりです:exec insertapruebab 1, valor1
exec insertapruebab 2, valor2
exec insertapruebab 3, valor3
exec insertapruebab 4, valor4
exec insertapruebab 5, valor5
exec insertapruebab 6, valor6
おかげ
あなたは文字通り実行しています:#querysEjecutarからselect campo1これはすべてのexec文を返しますが、実際には実行しません。これらの文をすべて1つの文字列に作成し、それをsp_executesqlに渡す必要があります。 – JeffO