2017-12-07 9 views
0

私のストアドプロシージャのテキストボックスからWHERE句の文字列を渡したいと思っています。ストアドプロシージャのWHERE句の文字列を渡す

SELECT * 
FROM TABLE 
WHERE "Textbox1.text" = '1234' 

(テキストボックスの値は、列名(例:「ID」となります)

私は、ストアドプロシージャでは?

はここでそれを返す、私がこれまで行って何がどのように行うことができます何の価値

ALTER PROCEDURE ORProc 
    @SEARCH_PARAMETER VARCHAR(100) = NULL, 
    @OR_NUMBER VARCHAR(20) = NULL, 
    @CLIENT_NAME VARCHAR(100) = NULL, 
    @OR_DATE VARCHAR(10) = NULL 
AS 
BEGIN 
    SET NOCOUNT ON; 

    SELECT * 
    FROM OR_HEADER 
    WHERE '%'+ @SEARCH_PARAMETER + '%' = @OR_NUMBER 
     OR '%'+ @SEARCH_PARAMETER + '%' = @OR_DATE 
     OR '%'+ @SEARCH_PARAMETER + '%' = @CLIENT_NAME 
END; 

EXEC ORProc @SEARCH_PARAMETER = 'OR_NUMBER', 
      @OR_NUMBER = '23232' 
+0

使用LIKEの代わりに= –

+0

に3つの値のパラメータを置き換えることができると思いますindex.php/2009/03/19/catch-all-queries /)または[ここ](http://www.sommarskog.se/dyn-search.html)を参照してください。 – HABO

+0

アプリケーションから列名を渡すのではなく、WHERE句で指定された必要な列のみを使用して、ストアドプロシージャの動的クエリを構築して実行することをお勧めします。 [動的検索条件](http://www.sommarskog.se/dyn-search.html)を参照してください。 –

答えて

0

は、次のクエリを試していない

SELECT * 
FROM OR_HEADER 
WHERE (@SEARCH_PARAMETER='OR_NUMBER' AND [email protected]_NUMBER) 
    OR (@SEARCH_PARAMETER='OR_DATE' AND [email protected]_DATE) 
    OR (@SEARCH_PARAMETER='CLIENT_NAME' AND [email protected]_NAME) 

@OR_DATE VARCHAR(10) = NULL@OR_DATE DATE = NULLまたは@OR_DATE DATETIME = NULLに置き換えることができると思います。

私はhttps://www.sqlinthewild.co.za/(おそらくあなたは[こちら]値の何かを見つけることができますが、1 @SEARCH_VALUE

ALTER PROCEDURE ORProc 
    @SEARCH_PARAMETER VARCHAR(100) = NULL, 
    @SEARCH_VALUE VARCHAR(100) = NULL 
AS 
BEGIN 
    SET NOCOUNT ON; 

    IF(ISNULL(@SEARCH_PARAMETER,'') NOT IN('','ID','OR_NUMBER','OR_DATE','CLIENT_NAME')) 
    BEGIN 
     PRINT 'You sent the wrong parameter!' 
     RETURN 
    END 

    SELECT * 
    FROM OR_HEADER 
    WHERE (@SEARCH_PARAMETER='OR_NUMBER' AND [email protected]_VALUE) 
     OR (@SEARCH_PARAMETER='OR_DATE' AND OR_DATE=CAST(@SEARCH_VALUE AS date)) 
     OR (@SEARCH_PARAMETER='CLIENT_NAME' AND [email protected]_VALUE) 
     OR (@SEARCH_PARAMETER='ID' AND ID=CAST(@SEARCH_VALUE AS int)) 
     OR ISNULL(@SEARCH_PARAMETER,'')='' 

END 
関連する問題