私はストアドプロシージャに追加したい次のスクリプトを持っています。今、私がこれを実行すると、SELECTステートメントはすべてのINSERTステートメントを出力します。これらの挿入ステートメントをストアドプロシージャ内から自動的に実行したいと思います。Insert文のSQL生成
私は動的SQLを実行してさまざまな方法を試しましたが、私のスクリプトが参照するシステムテーブルのせいでほとんど成功しませんでした。とにかく、適切なINSERT文を生成して同時に実行しますか?
私はこれにSQL Serverを使用しています。
MY CODE:
DECLARE @tablename as varchar(255) = 'tblsmoker'
DECLARE @SQL VARCHAR(MAX)
SET @SQL = (SELECT 'INSERT INTO tblCheck (ColumnName,ColumnValue,SID,SName,RID,RName)VALUES (''' + QUOTENAME(c.name) + ''',NULL,0,NULL,0,NULL);'
FROM sys.columns c
WHERE c.object_id = OBJECT_ID(@tablename))
print @SQL
EXEC(@SQL)
このコードは私を与えている:
サブクエリは複数の値を返しました。 サブクエリが、=、!<、< =、>、> =、またはサブクエリが式 として使用されている場合は、これは許可されません。
動的SQLは方法です:
はあなたの動的SQLの試みのこのわずかな修正をお試しください。試してみて失敗した場合は、デバッグできるように投稿してください。 –
構文 'set ... =(select)'を使わないでください。それは私の目を傷つけている。本当に必要なのは 'select @sql = 'insert into ...' from ... where ...' – ajeh