2009-08-18 33 views
7

なぜ私にエラーが出るのか理解できません。コメント欄に関連していると思っていましたが、@SQLはnvarchar(4000)です。'sp_executesql'の近くの構文が正しくありません

BEGIN 
    sp_executesql N'SELECT ''td''' 
    --sp_executesql @SQL, N'@StartDate DateTime, @EndDate DateTime, @End2 DateTime, @Program varchar(4)', @StartDate, @EndDate, @End2, @Program 
END 

答えて

13

これが理由です:あなたがブロックしているとき

 
-- This works just fine: 
BEGIN 
    -- You must have an exec before your sp_executesql or it will not work in a block 
    exec sp_executesql N'SELECT ''td''' 
END 

あなただけ幹部せずにストアドプロシージャを呼び出すことはできません。私もマスターを使用していたいくつかの場面で

+1

あなたはなしとexecストアドプロシージャを呼び出すことができますが、ストアドプロシージャへの呼び出しはブロック内の唯一のステートメントである場合のみです。 –

+1

最初の文でなければならず、必ずしも唯一の文である必要はありません。 – Tao

2

なぜこれをBEGIN ... ENDにしましたか?外部ブロックsp_executesqlを実行すると動作します。

任意で、execをsp_executesqlの前に入れることができます。

0

exec master..sp_executesql 
関連する問題