Хранимая процедура не обновляет таблицу при вызове из C # - PullRequest
0 голосов
/ 12 ноября 2009

У меня есть хранимая процедура, которая должна обновлять таблицу. Когда я запускаю его напрямую, я получаю «Команду (ы) выполнено успешно». Но при вызове из C # таблица не изменяется. Что не так?

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author:      Mohamamd Ibrahim Tasal
-- Create date: 29-Octobar-2009
-- Description: This procedure is releasing Numbers....
-- =============================================
ALTER PROCEDURE [dbo].[Release_MassMSISDN]
(
    @Quantity   int,
    @_SCP       int

)
AS
BEGIN
SET NOCOUNT ON;
set @Quantity=1;
set @_SCP=798000070;
DECLARE @_Filter nvarchar(1000)
DECLARE @sql nvarchar(4000)
IF @_SCP = 2
SET @_Filter = 'MSISDN LIKE ''799%'' OR MSISDN LIKE ''798%'''
IF @_SCP = 1
SET @_Filter = 'MSISDN LIKE ''797%'' OR MSISDN LIKE ''796%'' OR MSISDN LIKE ''7950%'' OR MSISDN LIKE ''7951%'' OR MSISDN LIKE ''7952'' OR MSISDN LIKE ''7953%'' OR MSISDN LIKE ''7954%'''
IF @_SCP = 3
SET @_Filter = 'MSISDN LIKE ''794%'''
IF @_SCP = 4
SET @_Filter = 'MSISDN LIKE ''793%''or MSISDN LIKE ''7955%'' OR MSISDN LIKE ''7956%'' OR MSISDN LIKE ''7957%'' or MSISDN LIKE ''7958%'' OR MSISDN LIKE ''7959%'''

UPDATE
    MSISDN_Master
    SET
    IMSI_HLR=NULL,
    IMSI_IN=NULL,
    GoldNumber=0,
    SERIAL=NULL,
    FK_AllocationTypeID = NULL,
    FK_ProfileTypeID = NULL,
    FK_ModelTypeID = NULL,
    FK_StatusID = NULL,
    FK_BatchID = NULL,
    Activation_Date = NULL, 
    Locked = 0,
    ICBlocked = 0,
    langcur = NULL,
    Credit = NULL
WHERE msisdn in ('SELECT TOP '+ CAST(@quantity AS varchar(10)) + ' MSISDN,IMSI_HLR,IMSI_IN,Serial,FK_BatchID BatchID,FK_AllocationTypeID AllocationTypeID,FK_ProfileTypeID ProfileTypeID,FK_ModelTypeID ModelTypeID,Activation_Date FROM MSISDN_Master
where imsi_hlr not like ''412%'' and imsi_hlr not like ''GOL%'' and imsi_hlr is not null and imsi_in is not null AND  ('+ @_Filter +') ORDER BY MSISDN')

END

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

Вы должны взглянуть на доступные варианты отладки. Я считаю, что если вы все настроите правильно, вы сможете отлаживать прямо из C # в хранимую процедуру SQL. Никогда не делал этого сам, но мне сказали, что это можно сделать.

Альтернативно установите эквивалентную хранимую процедуру, которая просто выполняет SELECT из предложения WHERE вашего ОБНОВЛЕНИЯ, чтобы увидеть, действительно ли вы получаете какие-либо записи назад, и если столбцы, которые вы ожидаете изменить, отличаются от значения, на которое вы рассчитываете изменить их.

И, конечно, убедитесь, что строка подключения указывает на нужную базу данных. Один из них поймал меня однажды (и это было так стыдно).

В противном случае, как предлагают другие парни, немного больше контекста и кода на C # было бы полезно. И что делает вас уверенным, что строки модифицируются. Упоминаются ли в SQL строки с упоминаниями или только для выполнения команд?

0 голосов
/ 12 ноября 2009

Вы уверены, что таблица обновляется правильно, когда вы запускаете хранимую процедуру напрямую?

Возможно ли, что в вашем коде C # вы начинаете транзакцию перед вызовом хранимой процедуры, но никогда не делаете ее впоследствии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...