2012-10-24 3 views
0

ASP.NET 웹 사이트 (C#)를 가지고 있으며 코드 백에서 http://www.w3schools.com/sql/sql_in.aspIN 연산자를 사용하여 데이터베이스에서 데이터를 가져 오려고합니다."IN"연산자를 사용하는 sql 쿼리의 동적 매개 변수

구문은 다음과 같습니다

SELECT column_name(s) 
FROM table_name 
WHERE column_name IN (value1,value2,...) 

내가 선택 결국, 내가 실행이 절차 내에서 데이터를 얻을 수있는 저장 프로 시저를 사용합니다.

제 질문은 동적으로 (value1, value2, ...) 부분을 쿼리하는 방법입니다. IN 연산자에 표시되는 값을 SqlParameter (으)로 보내려면 어떻게해야합니까?

WHERE ORGANIZATION in (xxxxxxxxxxxxx) 

방법이 작업을 수행하는 : 나는 같은과 함께 WHERE 절을 대체하고 싶습니다

CREATE PROCEDURE [dbo].[GetAllUsers] 
    @ORGANIZATION_ID int = null 
AS 
BEGIN 
    SET NOCOUNT ON; 

    begin 
     SELECT * 
     from USERS 
     where ORGANIZATION_ID = @ORGANIZATION_ID 
    end 
END 

:

저장 프로 시저는 다음과 같이 정의된다?

감사합니다. 당신은 동적 SQL 사용할 수 있습니다

+0

어떤 DBMS (SQLServer/MySQL/Oracle)를 사용하고 있습니까? – Vikdor

+0

sqlServer가 있습니다. –

답변

1

: 당신은 VARCHAR에 @ORGANIZATION_ID의 유형을 변경하고와 프로 시저를 실행해야

CREATE PROCEDURE [dbo].[GetAllUsers] 
    @ORGANIZATION_ID varchar(max) = null 
AS 
BEGIN 
    declare @sql varchar(max) 
    @sql = 'SELECT * 
      from USERS 
      where ORGANIZATION_ID in ('[email protected]_ID+')' 
    SET NOCOUNT ON; 
     begin 
      exec(@sql) 
     end 
END 

한 ID :

exec '1' 

또는 ID의 목록 :

exec '1,2,3,4' 
+0

감사합니다. ORGANIZATION_ID varchar (최대) 또는 ORGANIZATION_ID varchar (10000)를 사용해야합니까? –

+0

@Zelter Ady 필요한대로 :) – Parado

+0

그렇게하는 것은 나쁜 습관입니다. – Sklivvz

관련 문제