database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
ㆍSybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Sybase Q&A 1711 게시물 읽기
No. 1711
프로시저변수를 셋팅할때 order by 줄 수 있나요?
작성자
초코레이디
작성일
2006-11-03 17:01
조회수
5,083

프로시저를 처음 해보는 데다가 sybase도 처음 써보는데 예상한 대로 짜보아도 되질 않아서요... 도움 부탁드립니다. 

declare @sql_query, // 쿼리 변수

@pos_a, // 칼럼 a를 담는 변수

@pos_b, 

@pos_c,

@sql_condition // 조건문 변수


SET @sql_condition = " WHERE d < 3 AND b < 0 "

SET @sql_order =  " ORDER by a DESC "


   SET @sql_query = "set rowcount 5  SELECT @pos_a = a, @pos_b= b, @pos_c= c from T2 " + @sql_condition +  @sql_order

EXEC(@sql_query )


간단하게 이런식의 구문을 실행 한 후 아래처럼 변수값의 셋팅여부를 확인하였으나  @sql_order이 없는 경우에는 정상셋팅된 값이보여지나  @sql_order이 있는 경우에는 ''값이 나옵니다.


   SET @sql_query = "  SELECT @pos_a , @pos_b, @pos_c "

   EXEC(@sql_query )


이유가 따로 있는지 도저히 알 수도 없는 노릇이라..

조건문은 반드시 변수로 해야하는 아픔이 있어서 그냥... SELECT로 실행시킬수도 없고 난감한 실정입니다. 

버전은 최신버전이라고 들었는데... 방법 아시는 분 도와주세요~

이 글에 대한 댓글이 총 2건 있습니다.

몇가지가 틀렸는데요

1. @sql_order 는 변수 선언을 안했고요


2. @sql_query안에 @pos_a등은 그안에서 declare해야 하지요




바꿔본 쿼리입니다.

declare @sql_query varchar(255) -- 쿼리 변수

declare @sql_condition varchar(255),

@sql_order varchar(255)

SET @sql_condition = " WHERE d < '3' AND b < '3' "

SET @sql_order =  " ORDER by a DESC "

set @sql_query="declare @pos_a varchar(255),

@pos_b varchar(255),

@pos_c varchar(255)

"

   SET @sql_query = @sql_query+" SELECT @pos_a= a, @pos_b= b, @pos_c= c from T2 " + @sql_condition +  @sql_order

SET @sql_query = @sql_query+"select @pos_a,@pos_b,@pos_c"

select @sql_query

EXEC(@sql_query )


결과


                                                                                                                                                                                                                                                               

-                                                                                                                                                                                                                                                              

declare @pos_a varchar(255), 

@pos_b varchar(255), 

@pos_c varchar(255)

 SELECT @pos_a= a, @pos_b= b, @pos_c= c from T2  WHERE d < '3' AND b < '3'  ORDER by a DESC select @pos_a,@pos_b,@pos_c                                                             

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

-                                                                                                                                                                                                                                                               -                                                                                                                                                                                                                                                               -                                                                                                                                                                                                                                                              

1                                                                                                                                                                                                                                                               1                                                                                                                                                                                                                                                               1                                                                                                                                                                                                                                                              

 


수고하세요~~

지연님이 2006-11-07 18:37에 작성한 댓글입니다. Edit

가르침 감사합니다. 좋은 하루 되세요~

초코레이디님이 2006-11-08 12:55에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1714IQ에서요, 리눅스의 MAN처럼 함수 목록이나 메뉴얼 볼수 있나요? [4]
박상묵
2006-11-07
5304
1713Sybase IQ에서 Lock정보를 보는 시스템 프로시져? [1]
김종길
2006-11-06
6502
1712쿼리문 작성시 정규표현식 사용가능한가요?? [1]
이규선
2006-11-05
5036
1711프로시저변수를 셋팅할때 order by 줄 수 있나요? [2]
초코레이디
2006-11-03
5083
1710order by desc할때..건수 카운트를 어케 해야 하나요? [1]
queennie
2006-11-03
5321
1709특정 테이블이 어느 DB에 있는지 알고 싶은데요... [1]
좋았어
2006-11-03
4751
1708sybase STC 정기세미나
지연
2006-11-02
4506
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다