簡體   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