2016-08-23 2 views
0

데이터 테이블에없는 사용자 입력에서 임시 테이블로 데이터를 보내는 저장 프로 시저를 사용하여 대량 업데이트를 수행 할 수 있습니까?사용자 입력으로 저장 프로 시저 대량 업데이트

내가 foreach 루프를 가지고 있다면 체크 박스 목록과 텍스트 상자의 값과 같은 사용자 입력을 받는다. 내가 알고 싶은 것은 스토어드 프로 시저에서 개별 값을 매개 변수화하는 방법 또는 코드에서 수행 할 수있는 경우이다. 내가 지원하지 않는 SQL 버전을 사용하고 있기 때문에 테이블 반환 매개 변수를 사용할 수 없습니다.

conn.Open(); 

foreach(ListItem item in CheckBoxList1.Items) 
{ 
    if(item.Selected) 
    { 
     //handling parameters in loop. 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandText = "Update_Account_Table"; 
     cmd.Parameters["@SeqNum"].Value = amount.Text; 
     cmd.Parameters["@SeqDate"].Value = DateTime.ParseExact(datepicker.Text, "mmddyyyy", CultureInfo.InvariantCulture); 
     cmd.Parameters["@Account_ID"].CheckBoxList1.SelectedValue; 

     cmd.ExecuteNonQuery(); 
    } 

    conn.Close(); 
} 

저장 프로 시저

CREATE TABLE TempTable 
(
    SeqNum int, 
    SeqDate datetime, 
    Account_ID varchar(2) 
); 

CREATE PROCEDURE [ACCOUNTTABLE_UPDATE] 
AS 
    SET NOCOUNT ON 

    BEGIN 
     UPDATE AccountTable 
     SET SeqNum = t.SeqNum, SeqDate = t.SeqDate 
     FROM AccountTable AT 
     INNER JOIN TempTable t ON AT.AccountID = t.AccountID 
    END 
+0

를 완료 한 후

CREATE TABLE #TempTable 

은 임시 테이블을 생성하고 파괴 것처럼이 있어야합니다. http://www.sqlservercentral.com/Forums/Topic1017781-391-1.aspx를 읽을 수 있습니다. – mhn

답변

0

이 프로 시저에서 동적 테이블 이름을 사용하고, 수신 파라미터에 기초하여 값을 설정한다. 대신 임시 테이블의 아래 코드를 사용하거나 아래 @Stats_Value의 장소에서 매개 변수 @seqnum, @SeqDate, @AcctID을 사용할 수 있습니다 : 그것은 임시 테이블 만들기 위해 당신이 테이블 앞에 #을 추가 할 수 있습니다

USE [EODData] 
GO 

/****** Object: StoredProcedure [dbo].[erase_Stats] Script Date: 8/23/2016 4:32:55 PM ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [dbo].[erase_Stats] 
    @table varchar(25), @stats_value int 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 
    Declare @ProductsSQL nvarchar(max); 
SET @ProductsSQL = 'update ' + @table + ' set stats_completed = @Stats_Value' 
exec sp_executesql @ProductsSQL 
END 

GO 
0

과정은 내가 이전에 XML 매개 변수를 사용하여 비슷한 일을했던

관련 문제