2017-01-20 78 views

回答

0

您的輸入參數應該是varchar類型。 然後在您的程序中使用ISNUMERIC函數檢查號碼。如果是intvarchar,那麼有兩個基於IF語句的查詢。

DECLARE @userInput VARCHAR(50) 
IF ISNUMERIC(@userInput) = 1 
BEGIN 
-- Your query with userid 
END 
ELSE 
BEGIN 
-- Your query with emailid 
END 
1
CREATE PROCEDURE my_stored_procedure 
@emailId nvarchar(50) = NULL, 
@userId int = NULL 
AS 

SET NOCOUNT ON; 
IF (@emailId IS NOT NULL) AND (LEN(@emailId) > 0) 
    SELECT * FROM MYTABLE WHERE EmailId = @emailId 
ELSE 
    SELECT * FROM MYTABLE WHERE UserId = @UserId 
GO 
+0

錯誤:過程或函數「GetLoginDetails」需要參數「@userId ', 那是不供給的。 – user1048278

+0

我編輯的代碼,使@userId爲空 – dexter

0

嘗試此查詢,它可以幫助你。

DECLARE @emailid varchar(250),@userid bigint 
set @emailid='A' 
SET @userid=3 

select * from yourtable 
where case when @emailid='A' THEN 'A' ELSE emailid [email protected] 
AND case when @userid=0 THEN 0 ELSE userid [email protected] 

注:你應該通過「A」作爲EMAIL_ID和用戶標識默認值0,否則你可以通過你需要輸入

+0

你應該使用@dexter code.it給出理想的答案 –