DECLARE @ProjectID VARCHAR(4000)
DECLARE @NEWID INT
DECLARE @SQL VARCHAR(4000)
SET @ProjectID='2,3'
SET @NEWID=2
SET @ProjectID = 'INSERT INTO BM_DrawingToProject (ProjectID, DrawingID) VALUES ('''+ REPLACE(@ProjectID, ',', ''', '+ RTRIM(LTRIM(STR(@NewID))) +') INSERT INTO BM_DrawingToProject (ProjectID, DrawingID) VALUES (''')+''', '+ RTRIM(LTRIM(STR(@NewID))) +')'
SET @SQL = @ProjectIDPRINT @SQLEXEC @SQL上述SQL解释通过,但执行却不行,提示:The name 'INSERT INTO BM_DrawingToProject (ProjectID, DrawingID) VALUES ('2', 2) INSERT INTO BM_DrawingToProject (ProjectID, DrawingID) VALUES ('3', 2)' is not a valid identifier.单独执行INSERT INTO BM_DrawingToProject (ProjectID, DrawingID) VALUES ('2', 2) INSERT INTO BM_DrawingToProject (ProjectID, DrawingID) VALUES ('3', 2)又是可以的,郁闷!

解决方案 »

  1.   


    --try:DECLARE @ProjectID VARCHAR(4000) 
    DECLARE @NEWID INT 
    DECLARE @SQL VARCHAR(4000) 
    SET @ProjectID='2,3' 
    SET @NEWID=2 
    SET @ProjectID = 'INSERT INTO BM_DrawingToProject (ProjectID, DrawingID) VALUES ('''+ REPLACE(@ProjectID, ',', ''', '+ RTRIM(LTRIM(STR(@NewID))) +'); INSERT INTO BM_DrawingToProject (ProjectID, DrawingID) VALUES (''')+''', '+ RTRIM(LTRIM(STR(@NewID))) +')' 
    SET @SQL = @ProjectID exec(@sql)
      

  2.   


    执行字符串:EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )
    Microsoft的语法就是这样的.