[英]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.