Voici ma procédure stockée:procédure stockée ne retourne pas de ligne, mais même requête renvoie les données appropriées
CREATE PROC [SPmainReport]
@startDate date = null,
@endDate date = null,
@customerName varchar = null,
AS
SELECT Distinct
VI.Code as CustomerCode, VI.Name as CustomerName, VI.Area as CustomerArea, VI.[Address] as [address], CP.ProductName as ProductName, CP.ProductQuantity as Quantity
from
VendorTrading VT inner join CustomerProducts CP on VT.Id = CP.VendorTradingId inner join VendorInfo VI on VT.VendorId = VI.Id
where
(VT.Tradedate between isnull(@startDate,VT.Tradedate) and isnull(@endDate,VT.Tradedate))
and VI.Name = ISNULL(@customerName, VI.Name)
Lors de l'exécution, il ne retourne pas une valeur, mais si j'exécuter cette requête:
SELECT Distinct
VI.Code as CustomerCode, VI.Name as CustomerName, VI.Area as CustomerArea, VI.[Address] as [address], CP.ProductName as ProductName, CP.ProductQuantity as Quantity
from
VendorTrading VT inner join CustomerProducts CP on VT.Id = CP.VendorTradingId inner join VendorInfo VI on VT.VendorId = VI.Id
where
(VT.Tradedate between isnull(@startDate,VT.Tradedate) and isnull(@endDate,VT.Tradedate))
and VI.Name = ISNULL('John', VI.Name)
Renvoie exactement les données requises. Je suis totalement confus pourquoi cela se produit. Il n'y a pas de différence du tout. Je m'assure que les scripts fonctionnent sur la même base de données et contient également des données parfaites. voici script d'exécution SP:
USE [E:\SANDWICH3\ABC\BIN\DEBUG\DATABASE\ABC.MDF]
GO
DECLARE @return_value Int
EXEC @return_value = [dbo].[SPmainReport]
@startDate = '2015-12-25',
@endDate = '2015-12-25',
@customerName = N'John'
SELECT @return_value as 'Return Value'
GO
Un plus étrange, je l'ai remarqué est que si je modifie ces conditions de SP et limite avec des dates seulement, pas le nom. Cela fonctionne bien alors. Je travaille sur l'interface Visual Studio 2013 du serveur SQL. Non studio de gestion (Dans le cas où il fait la matière)
http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx (toujours affecter des longueurs aux types de variables) & http : //blogs.sqlsentry.com/aaronbertrand/bad-habits-attachdbfilename/ (pourquoi votre base de données est-elle nommée 'E: \ SANDWICH3 \ ABC \ BIN \ DEBUG \ DATABASE \ ABC.MDF' au lieu de simplement' ABC'?) –
Le nom est toujours ABC, le reste est le chemin de destination. Comme je l'ai mentionné, j'utilise Visual Studio Interface –