簡體   English   中英

在T-SQL中插入串聯值

[英]Inserting concatenated values in T-SQL

好的,這就是我要實現的目標:

我下面的腳本應該收集三個表中的值,然后依次將它們插入TO TABLE B中。

表B中的INDXLONG和DDLINE有兩列會受到影響。

在DDLINE行中,我嘗試連接來自不同字段的值並將它們存儲為一個。

我的代碼如下。 請分享任何見解:

Declare
    @nRowCount int, 
    @Indxlong int,
    @hdrLOCAL char(255),   
    @CR char(255),   
    @BLDCHKDT DATETIME,
    @BLDCHTIME DATETIME,   
    @hdrline int,   
    @1strowline int,   
    @2ndrowline int,   
    @3rdrowline int,   
    @BWP char(255),   
    @CompAcc char(11),   
    @BankCode char(11), 
    @BranchNo char(11),   
    @PayDate datetime,   
    @Reference char(11), 
    @TotaAmt numeric(19,5)
    @CoName char(11),   
    @BeneficiaryAcc char(11),   
    @BenBankBranchCode char(11),   
    @Salary numeric (19,5),   
    @BeneficiaryName char(23),   
    @TransRef char(23),   
    @outer_c int


SELECT @CompAcc =DDCOIDEN,
       @BankCode =DDIMORIG,
       @BranchNo =DDIMDEST,
       @Reference =DDDESC10,
       @CoName =DDIMORNM
FROM TABLE A

Declare ACH SCROLL CURSOR FOR 

SELECT T762.DDINDNAM,
        T762.DDTRANUM,
        T762.DDACTNUM,
        T762.DDAMTDLR,
        T756.PAYDATE
        FROM STATS.dbo.TABLE C T762
        LEFT OUTER JOIN STATS.dbo.TABLE D T756 ON (
                T762.INDXLONG = T756.INDXLONG
                AND T756.INCLPYMT = 1
                )
        WHERE (T756.INCLPYMT = 1)
            AND (T762.DDAMTDLR <> 0)
FOR READ ONLY;

OPEN ACH;
SET NOCOUNT ON;
FETCH FROM ACH INTO @BeneficiaryName,@BenBankBranchCode,@BeneficiaryAcc,@Salary,@paydate

WHILE @@FETCH_STATUS = 0
BEGIN
         Select @TotaAmt =SUM(@Salary)
         set @hdrline =1
         set @1strowline =2
         set @2ndrowline =3
         set @3rdrowline =9
         SELECT @hdrLOCAL = DDLINE FROM TABLE E WHERE INDXLONG =1
         SELECT @CR = DDLINE FROM TABLE E WHERE INDXLONG =2
         SELECT @BWP = DDLINE FROM TABLE E WHERE INDXLONG =3

BEGIN
    INSERT INTO TABLE B (INDXLONG,DDLINE)
    VALUES (1,@hdrLOCAL + ',' + @CR + ',' )
    SELECT @@IDENTITY
END
BEGIN
INSERT INTO TABLE B (INDXLONG,DDLINE)
    VALUES (2,@CompAcc + @BranchNo +','+ @BWP+ ',' + @PayDate +',' + @Reference + ','+@TotaAmt + ','+ @TransRef)
    SELECT @@IDENTITY
END

BEGIN
INSERT INTO TABLE B (INDXLONG,DDLINE)
VALUES (3,@BeneficiaryAcc + ',' + @BenBankBranchCode +','+ @BeneficiaryAcc+ ',' + @Salary +',' + @Reference + ','+@TotaAmt + ','+ @TransRef)
    SELECT @@IDENTITY
END
FETCH FROM ACH INTO @BeneficiaryName,@BenBankBranchCode,@BeneficiaryAcc,@Salary,@paydate
END

CLOSE ACH
DEALLOCATE ACH
SET NOCOUNT OFF;

這是錯誤:

Msg 8152,第16級,狀態14,第69行
字符串或二進制數據將被截斷。
該語句已終止。
消息241,第16層,州1,第74行
從字符串轉換日期和/或時間時轉換失敗。

這是我想要的結果:

INDXLONG    DDLINE                                                                                                                                                                                                                                                         ----------- -----------------------------------------------------------------------
1           101001       029       1403200610A094101 AMEN  BANK          LOVE    
2           123456 111               34567   PPDSALARYPAYT140131140117   11234567 
3           63206623    0101962706200    0000062709000319614      ADAMS EVE

如果要連接日期,請將日期轉換為varchars / nvarchars。 例如,@ PayDate應該這樣鑄造:cast(PayDate as varchar(20))。 或者,如果您需要特定格式的日期,請使用“轉換”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM