2017-01-20 2 views

答えて

0

入力パラメータはvarcharタイプである必要があります。 あなたの手順では、番号を確認するためにISNUMERIC関数を使用してください。 intまたはvarcharの場合は、IF文を使用して2つのクエリを実行します。

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をnullにするコードを編集しました – 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] 

注:あなたは「」EMAIL_IDと0ユーザーIDまたは他のデフォルト値として、あなたの必要な入力

+0

@dexter code.itを使用すると望ましい答えが得られます –

関連する問題