繁体   English   中英

动态 SQL 执行问题

[英]Dynamic SQL Execution Issue

我在 Quotes 下面执行时出现 Quotes 错误。我用双引号替换了硬编码值

 declare @query nvarchar(MAX)
    set @query = 'SELECT PID AS EID,
    ''637'' + p.SSN + SPACE(9- LEN(RTRIM(LTRIM(ISNULL(p.SSN,'')))))
    + ''98''
    + CONVERT(VARCHAR(6), GETDATE(), 12)
    + SPACE(9)
    + ''A1''
    + @Str1
    + @Str2
    + ISNULL(LEFT(UPPER(@Str1),30),'') + SPACE(30- LEN(RTRIM(LTRIM(ISNULL(LEFT(@Str1,30),'''')))))
    + ISNULL(LEFT(UPPER(@Str2),30),'') + SPACE(30- LEN(RTRIM(LTRIM(ISNULL(LEFT(@Str2,30),'''')))))
    + SPACE(1)
    + SPACE(8) AS Data, GETDATE() AS CreatedOn
    INTO #Temp
    FROM dbo.PERSON p'

    exec sp_executesql @query;



INSERT INTO  dbo.RKS_TransactionData
SELECT * FROM #Temp

isnull()的问题您需要在isnull() '''' (您已经完成但部分完成):

 declare @query nvarchar(MAX)

 set @query = 'SELECT PID AS EID,
    ''637'' + p.SSN + SPACE(9- LEN(RTRIM(LTRIM(ISNULL(p.SSN,'''')))))
    + ''98''
    + CONVERT(VARCHAR(6), GETDATE(), 12)
    + SPACE(9)
    + ''A1''
    + @Str1
    + @Str2
    + ISNULL(LEFT(UPPER(@Str1),30),'''') + SPACE(30- LEN(RTRIM(LTRIM(ISNULL(LEFT(@Str1,30),'''')))))
    + ISNULL(LEFT(UPPER(@Str2),30),'''') + SPACE(30- LEN(RTRIM(LTRIM(ISNULL(LEFT(@Str2,30),'''')))))
    + SPACE(1)
    + SPACE(8) AS Data, GETDATE() AS CreatedOn
    INTO #Temp
    FROM dbo.PERSON p'

    print @query -- see how query looks or try to compile query

    exec sp_executesql @query;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM