글쓴이 보관물: Toughman

이케아 휠리스(HYLLIS)

앞 베란다 쪽에 비어있는 작은 화분이 많아서 어떻게 정리해야 하는지 고민이 많았는데 이케아에 방문했을 때 저렴하면서 실용적인 제품을 발견하였습니다. 이케아 휠리스(HYLLIS) 라는 제품입니다.

이것저것 아무것이나 올려 놓을 것이라서 고급형 제품은 필요하지 않았습니다. 그래서 부담없이 쓸 수 있는 이케아 휠리스(HYLLIS) 가 딱 용도에 맞았습니다.

포장된 상태

포장된 상태

상품안내 레이블

상품안내 레이블

높이는 수치로만 보면 높은 것 같지않은데 실제 조립을 해보면 생각보다 높았습니다.

포장을 뜯은 조립전 상태

포장을 뜯은 조립전 상태

포장을 뜯어보니 안쪽에 설명서와 플라스틱으로 된 다리 그리고 나사가 들어 있었습니다. 나사 개수를 세어보니 많지도 적지도 않게 딱 쓸만큼만 들어 있었습니다. 한 두개쯤 여분이 있었으면 좋겠다는 생각이 들었습니다. 포장이 되어 있어서 그런지 금속 표면이 더럽지는 않았습니다. 혹시 몰라 닦아 보았는데 먼지가 검게 묻어 나오거나 하지는 않았습니다. 그리고 사진으로만 보면 모서리 부분이 날카로울 것 같은데 실제로는 그렇지 않았습니다. 생각보다는 마감이 잘 되어 있어 맨손으로 그냥 조립해도 손을 베인다거나 하는 문제는 없어보였습니다. 실제로 맨손으로 조립했는데 손을 다치지 않았습니다.

플라스틱 다리를 끼운 모습

플라스틱 다리를 끼운 모습

조립을 시작하고 가장먼저 플라스틱 다리를 끼웠습니다. 한 번에 딱 들어가지는 않았습니다. 모양을 잘 맞추어 끼우고 나무나 고무망치로 쳐서 빠지지 않도록 하면 될 것 같습니다.

선반의 한쪽 면을 연결한 모양

선반의 한쪽 면을 연결한 모양

나사를 처음부터 너무 꽉 조이지 않아야 합니다. 조립을 해보니 특히 혼자 조립하는 경우 무게와 부피가 있어서 나사 구멍을 정확히 맞추기가 어려울 것 같았습니다. 빠지지 않을 정도로 조여 놓고 다른 쪽을 연결해 가면서 일단 전체적인 모양을 잡고 단단히 조이는 방식으로 조립하는 것이 요령입니다.

처음에 느슨하게 조인 나사

처음에 느슨하게 조인 나사

나사를 느슨하게 조인 상태에서 모양을 잡으려고 하니 생각보다 잘 안되었습니다. 둘이 하면 훨씬 수월하게 작업할 수 있을 것 같았습니다. 그리고 나사가 아주 튼튼하지는 않아서 무리하게 힘을 주어 나서 머리가 뭉개지거나 하면 다른쪽에서 구멍이 맞지 않아 다시 풀어야 하는 경우 문제가 될 것 같았습니다. 다시 강조하지만 느슨하게 나사머리가 뭉개지지 않도록 조여 놓는 것이 요령입니다.

위 아래 선반과 모서리 기둥을 연결한 모습

위 아래 선반과 모서리 기둥을 연결한 모습

위 아래 선반과 기둥을 연결하여 틀을 잡고 안쪽의 선반을 연결하였습니다.

완성한 모습

완성한 모습

모양을 잡고 나머지 나사를 모두 단단히 조여 조립을 마쳤습니다.

정리안된 베란다

정리안된 베란다

정리안된 베란다의 화분들을 한쪽으로 치우고 완성된 이케아 휠리스(HYLLIS) 를 구석에 놓고 정리하였습니다.

정리된 모습

정리된 모습

제품의 정보는 아래 주소에서 확인하실 수 있습니다.

http://www.ikea.com/kr/ko/catalog/products/80278579/

구매하시는데 참고하시기 바랍니다.

SQL Server 프로시저 호출 시 OUTPUT 파라미터 이용하기

SQL Server 프로시저를 호출하는 경우 select 문의 결과를 가져오는 경우가 대부분 입니다. 그런데 상황에 따라 다른 값도 같이 가져오면 좋은 경우가 있습니다. 대표적인 것이 목록의 페이지 번호를 나타나기 위해서 전체글의 개수를 가져와야 하는 경우입니다. 이전에는 프로시저 호출 시 입력파라미터만 있는 줄 알고 필요한 값을 가져오기 위해서 다른 프로시저를 다시 호출하는 경우도 있었습니다. 자주 사용하는 것은 아니지만 적재적소에 사용하면 작업의 효율을 높여 줍니다.

소스코드 내에서 SQL Server 프로시저를 호출하는 부분을 보도록 하겠습니다.

var sqlParameter = new List<SqlParameter>()
 {
 new SqlParameter() { ParameterName = "@dealer", SqlDbType = SqlDbType.VarChar, Size = 50, Value = dealer }
 , new SqlParameter() { ParameterName = "@date_from", SqlDbType = SqlDbType.VarChar, Size = 8, Value = dateFrom }
 , new SqlParameter() { ParameterName = "@date_to", SqlDbType = SqlDbType.VarChar, Size = 8, Value = dateTo }
 , new SqlParameter() { ParameterName = "@one_page_data_count", SqlDbType = SqlDbType.Int, Value = onePageDataCount }
 , new SqlParameter() { ParameterName = "@page", SqlDbType = SqlDbType.Int, Value = page }
 , new SqlParameter() { ParameterName = "@total_count", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Output }
 , new SqlParameter() { ParameterName = "@payment_amount_sum", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Output }
 , new SqlParameter() { ParameterName = "@virtual_account_sum", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Output }
 };

강조된 8, 9, 10 행을 보면 Direction = ParameterDirection.Output 와 같이 지정된 부분이 있습니다. 프로시저의 값을 가져오는 파라미터로 사용하겠다는 의미 입니다.

프로시저에서도 지정해 주어야 합니다.

ALTER PROCEDURE [dbo].[sample_select]
@dealer VARCHAR(50)
, @date_from VARCHAR(8)
, @date_to VARCHAR(8)
, @one_page_data_count int 
, @page int
, @total_count int output
, @payment_amount_sum int output
, @virtual_account_sum int output
AS
BEGIN
select @total_count = count(*) from your_table
select @payment_amount_sum = sum(amount) from your_table_payment
select @payment_amount_sum = sum(price) from your_table_account
...
END

강조된 7, 8, 9행에 output 으로 지정된 것을 확인할 수 있습니다.

프로시저 호출 후 C# 코드에서는 다음과 같이 값을 가져옵니다.

var totalCount = Convert.ToInt32(sqlParameter[5].Value);
var paymentAmountSum = Convert.ToInt32(sqlParameter[6].Value);
var virtualAccountSum = Convert.ToInt32(sqlParameter[7].Value);

프로시저를 테스트 하기위해 단순히 실행만 하면 OUTPUT 파라미터값을 확인하기 어렵습니다. 이럴때에는 SSMS(SQL Server Management Studio)에서 프로시저를 선택하고 마우스 오른쪽 버튼을 클릭하면 저장 프로시저 실행 항목이 있습니다. 이것을 선택하면 대화상자가 나타나는데 여기에 값을 입력하고 실행하면 OUTPUT 파라미터 값도 확인할 수 있습니다.

프로 시저 실행을 선택하면 나타나는 대화상자

프로 시저 실행을 선택하면 나타나는 대화상자