2013-04-09 30 views
0

在動態SQL語句中,一個@STU_ID值無法將數據插入到另一個表中。在這裏我需要知道在執行時失敗的是哪個@STU_ID。SQL Server中的動態SQL中的異常處理

CREATE PROC DATA_COPY 
(
@SRC_TABLE VARCHAR(30), 
@DEST_TABLE VARCHAR(30) 
) 
AS 
DECLARE @STU_ID INT 
BEGIN 
    DECLARE STUDENT_CURSOR CURSOR FOR 
    SELECT DISTINCT STU_ID FROM STUDENT 

    OPEN STUDENT_CURSOR 
     FETCH NEXT FROM STUDENT_CURSOR INTO @STU_ID 
    WHILE @@FETCH_STATUS = 0 
     BEGIN 

EXEC ('INSERT INTO '[email protected]_TABLE+' 
    SELECT * 
    FROM '[email protected]_TABLE+' 
    WHERE STU_ID='[email protected]_ID) 

     FETCH NEXT FROM STUDENT_CURSOR INTO @STU_ID 
    END 
    CLOSE STUDENT_CURSOR 
    DEALLOCATE STUDENT_CURSOR 
END 

你能幫我怎麼做嗎?

感謝

+0

你得到一個錯誤的上下文中捕獲數據?如果可以,你可以包括它嗎?最有可能的情況是'SELECT * FROM'+ @ SRC_TABLE +'WHERE STU_ID ='+ @ STU_ID'沒有結果。在執行插入操作之前,您應該檢查並確保有數據。此外,您正在基於SELECT *插入到表中。當架構發生變化時,這會給你帶來麻煩。 – Gibron 2013-04-09 06:37:28

+0

錯誤消息:消息8152,級別16,狀態14,行1 字符串或二進制數據將被截斷。 – user1990383 2013-04-09 06:40:48

+0

我明確地更改了目標表中比源表低一列的大小,其中我的要求是在執行存儲過程時收到消息是「@ STU_ID無法將數據插入目標表」 – user1990383 2013-04-09 06:44:52

回答