Sql server 存储过程不返回数据

Sql server 存储过程不返回数据,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我有以下存储过程。这很简单 ALTER PROCEDURE [dbo].[SPU_IsoSearch] @searchby varchar(4), @userinput varchar(25) AS IF(@userinput IS NOT NULL) BEGIN if(@searchby = 'fname') BEGIN SET NOCOUNT ON; SELECT CustID, CustFirstName, CustLastName, CustCit

我有以下存储过程。这很简单

ALTER PROCEDURE [dbo].[SPU_IsoSearch] 

@searchby varchar(4),
@userinput varchar(25)

AS
IF(@userinput IS NOT NULL)
BEGIN
  if(@searchby = 'fname')
     BEGIN
     SET NOCOUNT ON;
     SELECT CustID, CustFirstName, CustLastName, CustCity, CustEmail 
     FROM Customers where CustFirstName like '%' + @userinput + '%'
     ORDER BY CustFirstName
  END
END
然后,我执行它:

exec spu_isoSearch 'fname','de'
它不返回任何内容,只返回一条消息“Command(s)completed successfully”

但如果我只是写:

select * from Customers where CustFirstName like '%de%'
我会得到数据的

我做错了什么


谢谢

您的参数“searchby”是varchar(4),请尝试更改为varchar(5)或适当的长度


由于声明为varchar(4),if语句将“fnam”与“fname”进行比较,并且由于两者不相等,select语句不会执行。

如果参数“searchby”是varchar(4),请尝试更改为varchar(5)或适当的长度


由于声明为varchar(4),if语句将“fnam”与“fname”进行比较,并且由于两者不相等,select语句不会执行。

如果参数“searchby”是varchar(4),请尝试更改为varchar(5)或适当的长度


由于声明为varchar(4),if语句将“fnam”与“fname”进行比较,并且由于两者不相等,select语句不会执行。

如果参数“searchby”是varchar(4),请尝试更改为varchar(5)或适当的长度

由于声明为varchar(4),if语句将“fnam”与“fname”进行比较,并且由于两者不相等,select语句不会执行,因为Ghost(用户)提到了参数长度,另外注意,您的过程可以进行类似的清理

ALTER PROCEDURE [dbo].[SPU_IsoSearch] 
@searchby varchar(5),    --<-- As pointed out by OP "Ghost"
@userinput varchar(25)
AS
BEGIN
  SET NOCOUNT ON;

  IF(@searchby = 'fname' AND @userinput IS NOT NULL) 
   BEGIN 
     SELECT CustID, CustFirstName, CustLastName, CustCity, CustEmail 
     FROM Customers where CustFirstName like '%' + @userinput + '%'
     ORDER BY CustFirstName
   END
END
ALTER过程[dbo].[SPU_IsoSearch]
@searchby varchar(5),--因为Ghost(用户)已经提到了参数长度,另外,您的过程可以像这样进行清理

ALTER PROCEDURE [dbo].[SPU_IsoSearch] 
@searchby varchar(5),    --<-- As pointed out by OP "Ghost"
@userinput varchar(25)
AS
BEGIN
  SET NOCOUNT ON;

  IF(@searchby = 'fname' AND @userinput IS NOT NULL) 
   BEGIN 
     SELECT CustID, CustFirstName, CustLastName, CustCity, CustEmail 
     FROM Customers where CustFirstName like '%' + @userinput + '%'
     ORDER BY CustFirstName
   END
END
ALTER过程[dbo].[SPU_IsoSearch]
@searchby varchar(5),--因为Ghost(用户)已经提到了参数长度,另外,您的过程可以像这样进行清理

ALTER PROCEDURE [dbo].[SPU_IsoSearch] 
@searchby varchar(5),    --<-- As pointed out by OP "Ghost"
@userinput varchar(25)
AS
BEGIN
  SET NOCOUNT ON;

  IF(@searchby = 'fname' AND @userinput IS NOT NULL) 
   BEGIN 
     SELECT CustID, CustFirstName, CustLastName, CustCity, CustEmail 
     FROM Customers where CustFirstName like '%' + @userinput + '%'
     ORDER BY CustFirstName
   END
END
ALTER过程[dbo].[SPU_IsoSearch]
@searchby varchar(5),--因为Ghost(用户)已经提到了参数长度,另外,您的过程可以像这样进行清理

ALTER PROCEDURE [dbo].[SPU_IsoSearch] 
@searchby varchar(5),    --<-- As pointed out by OP "Ghost"
@userinput varchar(25)
AS
BEGIN
  SET NOCOUNT ON;

  IF(@searchby = 'fname' AND @userinput IS NOT NULL) 
   BEGIN 
     SELECT CustID, CustFirstName, CustLastName, CustCity, CustEmail 
     FROM Customers where CustFirstName like '%' + @userinput + '%'
     ORDER BY CustFirstName
   END
END
ALTER过程[dbo].[SPU_IsoSearch]

@searchby varchar(5)——他们正在检查userinput是否为null,而不是searchbyThank,这很有帮助。甚至都没有看,他们正在检查用户输入是否为空,而不是searchbyThank,这很有帮助。甚至都没有看,他们正在检查用户输入是否为空,而不是searchbyThank,这很有帮助。甚至都没有看,他们正在检查用户输入是否为空,而不是searchbyThank,这很有帮助。连看都没看一眼,谢谢,太多了。我甚至都没看一眼,谢谢你。我甚至都没看一眼,谢谢你。我甚至都没看一眼,谢谢你。连看都没看