응용 프로그램에있는 양식의 모든 행에 대해 새 행을 삽입해야하는 저장 프로 시저가 있지만 값을 연결하여 SQL의 한 행에 저장하는 저장 프로 시저가 있습니다. 섬기는 사람.저장 프로 시저가 새 행을 삽입하지 않음
이상한 점은 내가하는 일을 정확히 수행하고 양식의 모든 행을 가져 와서 각 행을 SQL Server 테이블에 고유 한 행으로 삽입한다는 점입니다.
나를 기다리는 동안 두 사람이 서로 다른 결과물을 만드는 위치/방법을 찾을 수 없습니다. 둘 다 똑같이 수행되어야합니다.
다음은 작동하는 저장 프로 시저입니다.
하위 :
Private Sub AddHOMEFunds(ByVal HomeID As Integer)
clearHOMEFunds(HomeID)
Dim i As Integer
For i = 0 To Request.Form.Count - 1
If InStr(Request.Form.Keys(i), "HOMEprojectName") > 0 Then
Dim connProperties As String = Globals.connstring
Dim sql As String = "spAddHOMEFunds"
Dim objConn As New SqlConnection(connProperties)
objConn.Open()
Dim cmd As New SqlCommand(sql, objConn)
With cmd
.CommandType = Data.CommandType.StoredProcedure
.Parameters.AddWithValue("@HOMEID", HomeID)
.Parameters.AddWithValue("@HOMEprojectName", Request.Form.Item(i))
.Parameters.AddWithValue("@HOMEfiscalYear", Request.Form.Item(i + 1))
.Parameters.AddWithValue("@HOMEfundingReceived", Request.Form.Item(i + 2))
.Parameters.AddWithValue("@HOMEunitsDeveloped", Request.Form.Item(i + 3))
.Parameters.AddWithValue("@HOMEremainingFunds", Request.Form.Item(i + 4))
.Parameters.AddWithValue("@HOMEfinalDraw", Request.Form.Item(i + 5))
End With
cmd.ExecuteNonQuery()
objConn.Close()
End If
Next
End Sub
저장 프로 시저 : 여기
USE [DB]
GO
/****** Object: StoredProcedure [dbo].[spAddHOMEFunds] Script Date: 05/20/2014 11:25:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spAddHOMEFunds]
@HOMEID int
,@HOMEprojectName varchar(max)
,@HOMEfiscalYear varchar(max)
,@HOMEfundingReceived varchar(max)
,@HOMEunitsDeveloped varchar(max)
,@HOMEremainingFunds varchar(max)
,@HOMEfinalDraw varchar(max)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[HOMEFunds]
([HOMEID]
,[HOMEprojectName]
,[HOMEfiscalYear]
,[HOMEfundingReceived]
,[HOMEunitsDeveloped]
,[HOMEremainingFunds]
,[HOMEfinalDraw])
VALUES
(@HOMEID
,@HOMEprojectName
,@HOMEfiscalYear
,@HOMEfundingReceived
,@HOMEunitsDeveloped
,@HOMEremainingFunds
,@HOMEfinalDraw)
END
그리고 작동하지 않는 저장 프로 시저입니다.
하위 :
Private Sub AddHOMEFundsReceived(ByVal HomeID As Integer)
clearHOMEFundsReceived(HomeID)
Dim i As Integer
For i = 0 To Request.Form.Count - 1
If InStr(Request.Form.Keys(i), "FundsReceivedProjectName") > 0 Then
Dim connProperties As String = Globals.connstring
Dim sql As String = "spAddHOMEFundsReceived"
Dim objConn As New SqlConnection(connProperties)
objConn.Open()
Dim cmd As New SqlCommand(sql, objConn)
With cmd
.CommandType = Data.CommandType.StoredProcedure
.Parameters.AddWithValue("@HOMEID", HomeID)
.Parameters.AddWithValue("@FundsReceivedProjectName", Request.Form.Item(i))
.Parameters.AddWithValue("@FundsReceivedYearReceived", Request.Form.Item(i + 1))
.Parameters.AddWithValue("@FundsReceivedSource", Request.Form.Item(i + 2))
.Parameters.AddWithValue("@FundsReceivedAmount", Request.Form.Item(i + 3))
.Parameters.AddWithValue("@FundsReceivedOutcome", Request.Form.Item(i + 4))
.Parameters.AddWithValue("@FundsReceivedFundsRemaining", Request.Form.Item(i + 5))
.Parameters.AddWithValue("@FundsReceivedPercentRemaining", Request.Form.Item(i + 6))
End With
cmd.ExecuteNonQuery()
objConn.Close()
End If
Next
End Sub
저장 프로 시저 :
USE [DB]
GO
/****** Object: StoredProcedure [dbo].[spAddHOMEFundsReceived] Script Date: 05/20/2014 10:44:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spAddHOMEFundsReceived]
@HOMEID int
,@FundsReceivedProjectName varchar(max)
,@FundsReceivedYearReceived varchar(max)
,@FundsReceivedSource varchar(max)
,@FundsReceivedAmount varchar(max)
,@FundsReceivedOutcome varchar(max)
,@FundsReceivedFundsRemaining varchar(max)
,@FundsReceivedPercentRemaining varchar(max)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[HOMEFundsReceived]
([HOMEID]
,[FundsReceivedProjectName]
,[FundsReceivedYearReceived]
,[FundsReceivedSource]
,[FundsReceivedAmount]
,[FundsReceivedOutcome]
,[FundsReceivedFundsRemaining]
,[FundsReceivedPercentRemaining])
VALUES (@HOMEID
,@FundsReceivedProjectName
,@FundsReceivedYearReceived
,@FundsReceivedSource
,@FundsReceivedAmount
,@FundsReceivedOutcome
,@FundsReceivedFundsRemaining
,@FundsReceivedPercentRemaining)
END
가 다시 작업 저장 프로 시저 내 응용 프로그램의 각 폼 행에 대해 새 행을 만듭니다.
저장 프로 시저가 작동하지 않는 경우 SQL Server의 테이블 행 하나에서 각 양식 행에 대해 쉼표로 구분 된 값을 모두 연결하여 만듭니다.
간단히 말해, 제대로 작동하지 않는 저장 프로 시저가 올바르게 작동하는 저장 프로 시저와 동일해야합니다.
도움을 주셨습니다.
즉각적인 잘못으로 저에게 뛰어 드는 것은 없습니다. 서버 측 코드를 디버깅하고 ExecuteNonQuery가 실행되는시기와 매개 변수 값을 정확히 확인하고 데이터베이스에서 프로필을 사용하여 어떤 쿼리를 보내고 있는지 확인하는 것이 좋습니다. – GarethD