J'essaie de faire une insertion d'une base de données appelée suspension à la table appelée Notification dans la base de données ANimals. Ma procédure stockée est la suivante:INSERT procédure stockée ne fonctionne pas?
ALTER PROCEDURE [dbo].[spCreateNotification]
-- Add the parameters for the stored procedure here
@notRecID int,
@notName nvarchar(50),
@notRecStatus nvarchar(1),
@notAdded smalldatetime,
@notByWho int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO Animals.dbo.Notification
(
NotRecID,
NotName,
NotRecStatus,
NotAdded,
NotByWho
)
values (@notRecID, @notName, @notRecStatus, @notAdded, @notByWho);
END
L'insertion nulle est de reconstituer une colonne qui, autrement, ne sera pas rempli, je l'ai essayé différentes façons, comme l'utilisation également les noms des colonnes après le nom de la table et alors seulement indiquer en valeurs les champs que j'ai. Je sais que ce n'est pas un problème de la procédure stockée parce que je l'ai exécuté à partir du studio de gestion du serveur sql et cela fonctionne en introduisant les paramètres. Alors je suppose que le problème doit être dans le référentiel lorsque j'appelle la procédure stockée:
public void createNotification(Notification not)
{
try
{
DB.spCreateNotification(not.NotRecID, not.NotName, not.NotRecStatus,
(DateTime)not.NotAdded, (int)not.NotByWho);
}
catch
{
return;
}
}
Et j'appelle ici la méthode:
public void createNotifications(IList<TemporalNotification> notifications)
{
foreach (var TNot in notifications)
{
var ts = RepositoryService._suspension.getTemporalSuspensionForNotificationID(TNot.TNotRecID);
Notification notification = new Notification();
if (ts.Count != 0)
{
notification.NotName = TNot.TNotName;
notification.NotRecID = TNot.TNotRecID;
notification.NotRecStatus = TNot.TNotRecStatus;
notification.NotAdded = TNot.TNotAdded;
notification.NotByWho = TNot.TNotByWho;
if (TNot.TNotToReplace != 0)
{
var suspensions = RepositoryService._suspension.getSuspensionsAttached((int)TNot.TNotToReplace);
foreach (var sus in suspensions)
{
sus.CtsEndDate = TNot.TNotAdded;
sus.CtsEndNotRecID = TNot.TNotRecID;
DB.spModifySuspensionWhenNotificationIsReplaced((int)TNot.TNotToReplace, (int)sus.CtsEndNotRecID, (DateTime) sus.CtsEndDate);
}
DB.spReplaceNotification((int)TNot.TNotToReplace, DateTime.Now);
createNotification(notification);
}
else
{
createNotification(notification);
}
}
}
deleteTemporalNotifications(notifications);
}
Il n'enregistre pas la valeur de la base de données. J'ai débogué et je me suis énervé à ce sujet, parce que ça marche quand je l'exécute manuellement, mais pas quand j'automatise le processus dans mon application. Est-ce que quelqu'un voit quelque chose de mal avec mon code?
Merci
EDIT: Ajout de plus de code. Cela ne fonctionne toujours pas en changeant cela, je veux dire, la procédure fonctionne si je l'exécute, donc je ne sais pas ce qui pourrait être l'erreur. En fait, je n'ai aucune erreur. Pourrait-il être question de writin dans une table qui n'est pas dans la base de données où vous avez votre procédure stockée?
Lorsque vous entrez dans le code, il ne reçoit en fait au point d'appeler la procédure? – NotMe
Oui, oui, et ça passe comme si rien n'était là. Je vérifie la table après l'appel et rien ne se passe dans la base de données. Je ne sais pas quoi d'autre à essayer, jamais été coincé lol – vikitor
Avez-vous modifié votre procédure pour énumérer les colonnes de votre clause INSERT? – Thomas