SELECT 결과를 CSV 포멧으로 저장 하려면 아래와 같이 처리 한다.


sqlplus에 로긴 하여 위와 같이 입력하면, output.lst 파일에 원하는 내용이 저장된다.

다른 방법으로 파이프를 이용하는 방법이 있다.


쉘에서 이렇게 입력을 하면, 원하는 결과를 얻을 수 있다.

[출처]

오라클에서 다른 계정의 테이블을 Import 해오고자 한다.
테이블 이름만 동일하고 계정 및 테이블 스페이스가 다른 경우의 Import 과정이다.

oraid 계정에서 devdb 계정으로 Import 하는 과정을 설명한다.

1. Table Space 생성
SQL> CREATE TABLESPACE TS_DEV_DATA
DATAFILE '/home/dba/oradata/ts_dev_data.dbf' SIZE 2048M
AUTOEXTEND OFF;

SQL> CREATE TABLESPACE TS_DEV_IDX
DATAFILE '/home/dba/oradata/ts_dev_idx.dbf' SIZE 1024M
AUTOEXTEND OFF;

Data를 위한 TS_DEV_DATA아 Index를 위한 TS_DEV_IDX 를 생성 했다.
개발 목적의 테이블 스페이스 이므로 용량 자동 증가는 꺼두었다.

2. devdb 계정 생성 
SQL> CREATE USER devdb IDENTIFIED BY devdb
DEFAULT TABLESPACE TS_DEV_DATA
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON TS_DEV_DATA;

SQL> GRANT CONNECT,RESOURCE TO FRDEV;

계정을 생성하고, 필요한 권한을 부여 했다.

3. Export
$ exp oraid/orapwd file=tbl_exp_20100201.dmp tables="tbl_test1, tbl_test2, tbl_test3" ignore=y

Source DB에 접속 하여 필요한 테이블을 Export 한다.

4. Table 생성
SQL> CREATE TABLE TBL_TEST1 
(
SEQ              NUMBER(10) NOT NULL,
CODE             VARCHAR2(10) NOT NULL,
DATA             VARCHAR2(20) NOT NULL
CONSTRAINT PK_TEST1
    PRIMARY KEY (SEQ) USING INDEX 
    TABLESPACE TS_DEV_IDX
)
TABLESPACE TS_DEV_DATA;

SQL> CREATE TABLE TBL_TEST2
 - 생략 - 
SQL> CREATE TABLE TBL_TEST3
 - 생략 - 

Export를 하게 되면 테이블 생성 정보까지 포함된다. 
그대로 Import 하게 되면, 새로 생성한 테이블 스페이스에 저장되는 것이 아니고, 
기존 테이블 스페이스에 저장 되므로 원하는 공간에 미리 테이블을 생성 해 둔다.

5. Import
$ imp oraid/orapwd fromuser=oraid touser=devdb file=tbl_user.dmp tables=tbl_user ignore=y

Import 받고자 하는 devdb 계정을 touser 파라미터로 지정한다.
테이블 생성시 발생하는 오류를 건너 뛰기 위해 ignore 파라미터를 추가한다.




Oracle Bulk Loader

it/db 2009/08/27 02:47 Posted by newtype
Oracle DB의 특정 테이블에 대용량의 데이터를 Insert 하고 싶을때,
Oracle Bulk Loader를 사용한다.

Loader를 사용하기 위해서는 컨트롤 파일과, 데이터 파일이 필요하다.

컨트롤 파일은 데이터 파일 정보와 테이블 정보를 가지고 있고,
데이터 파일은 DB에 넣고자 하는 데이터 목록을 가지고 있다.

1. 테이블 생성
CREATE TABLE TEST_TBL (
    NAME CHAR(20),
    SCORE NUM(5),
    UPDATE DATE );

2. 컨트롤 파일 생성
$ cat test.ctl
LOAD DATA
INFILE test.dat
INTO TABLE TEST_TBL
FIELDS TERMINATED BY ','
(NAME, SCORE, UPDATE SYSDATE)
3. 데이터 파일 생성
$ head test.dat
USER1,70
USER2,80
USER3,90
USER4,100

4. 로더 실행
$ sqlldr tiger control=test.ctl log=test.log
 * Oracle 계정명은 tiger

보다 상세한 사용법은 아래 링크를 참고 하세요
http://infolab.stanford.edu/~ullman/fcdb/oracle/or-load.html
http://www.orafaq.com/wiki/SQL*Loader_FAQ



Oracle import / export

it/db 2009/05/21 17:20 Posted by newtype

Export

 * 사용자 지정
$ exp oracle_id/oracle_pwd file='dump_filename.dmp' owner=oracle_id compress=y log=log_filename.log

 * 테이블 지정
$ exp oracle_id/oracle_pwd file='dump_filename.dmp' tables=table_name

 * 테이블 조건 지정
$ exp oracle_id/oracle_pwd file='dump_filename.dmp' tables=table_name query=\"where seq=\'007\'\"


Import

 * 사용자 지정
$ imp oracle_id/oracle_pwd file='dump_filename.dmp' fromuser=oracle_id touser=oracle_id log=log_filename.log

 * 테이블 지정
imp oracle_id/oracle_pwd file='dump_filename.dmp' tables=table_name ignore=y

 * 테이블 조건 지정
  테이블 조건 별로 Insert를 할 수가 없다.
  ignore=y 옵션을 주면 에러가 발생해도 계속 진행한다.
   -> DB오류가 발생하면 해당 레코드는 Insert 하지 않는다. (PK가 중복등..)

Pro*c를 이용한 오라클 PL/SQL function 호출

it/db 2009/04/10 10:28 Posted by newtype
Proc*c를 이용해 Sub Program(Procedure or Function)을 호출 하는 방법에 대해 설명한다.

자료를 되져보면 대부분의 샘플 코드가 Procedure 로만 되어 있다.
여기서는 Function을 호출 해 보기로 한다.
사실 호출 방법은 거의 비슷 하다.

- 컴파일 방법
PL/SQL 구문을 사용하기 때문에 proc 컴파일 옵션을 주어야 한다.
그런데, 컴파일 옵션을 주면 다른 Pro*c 구문에서 컴파일이 안되는 일이 발생을 한다.
따라서, PL/SQL 구문을 사용하는 소스는 별도 .pc 파일로 때어 내어서 별도 컴파일을 해야한다.

$ proc include=../inc iname=sub.pc SQLCHECK=SEMANTICS userid=oracleid/oraclepwd

여기서 기존 컴파일 방법과 다른 부분은 "SQLCHECK=SEMANTICS" 옵션이 추가된 것과,
userid 옵션이 추가된 것이다.
userid 옵션에는 오라클 로긴을 위한 ID와 Password를 넣어 준다.


- 샘플 소스
/** @file       sub.pc
 * @brief       Remote Function Call  
 * @author    newtype
 * @date    2009-04-10
 */

#ifndef _SUB_PC_
#define _SUB_PC_

#include "common.h"

EXEC SQL INCLUDE SQLCA;

/** @brief 오라클 Function을 호출 한다.
 * @param in [IN] 오라클 Fucntion Parameter
 * @param out [OUT] 오라클 Fucntion Return 값을 반환
 * @return 0     정상처리
 * @return 그외  오라클 에러 코드
 * @remarks 참고 사항
 * @warning 주의 사항
*/
int CallOracleFunction(char* in, char* out)
{    
    EXEC SQL BEGIN DECLARE SECTION;
        char szOut[MAX_BUF] = "";
    EXEC SQL END DECLARE SECTION;

    EXEC SQL EXECUTE
    BEGIN
        :szOut := ORA_SAMPLE_FUNC( in );
        IF szOut = 'newtype' THEN
            strcpy( out, szOut) ;
            COMMIT;
        ELSE
            strcpy( out, 'newtype.pe.kr');
            ROLLBACK;
        END IF;
    END;
    END-EXEC;

    return nErrCode;
}

#endif

ORA-01002 fetch out of sequence

it/db 2008/07/11 17:24 Posted by newtype

ORA-01002 fetch out of sequence 는 여러 경우에 발생을 한다.

그중 한가지에 대한 오류 발생 사례 이다.

DB Link로 Remote 테이블을 참조 하고 있는 프로세스가 작업을 수행하고 있는 상태에서,
Remote DB가 Shotdown 되는 경우 위 에러가 발생 한다.
Remote DB가 Start되고 새로운 세션을 맺어야 프로세스가 정상 동작을 한다.
세션을 유지한 상태에서 Remote DB가 Start 되어도 위 에러가 계속 발생한다.

말이 어렵다 테스트 해보자.

1. ORA TNS에 RemoteDB를 추가한다.

2. DB 링크를 생성한다.
CREATE PUBLIC DATABASE LINK test_link CONNECT TO remoteDBid IDENTIFIED BY remoteDBpwd USING 'remoteDB';
CREATE SYNONYM test_proc FOR test_proc_table@test_link
SELECT * FROM test_proc

3. 데이터를 삽입한다.
insert into test_proc values ( 1, 1 );
insert into test_proc values ( 2, 1 );
~~~~~~
insert into test_proc values ( 33, 1 );
insert into test_proc values ( 44, 1 );

4. 테스트 프로그램을 작성한다.
$ vi t.pc
#include <stdio.h>

EXEC SQL INCLUDE SQLCA;

#define MAX_ARRAY_SIZE 10

int main()
{
    int n;

    EXEC SQL BEGIN DECLARE SECTION;
        int  hSEQ; 
        char hOracleUser[20] = "localDBid";
        char hOraclePwd[20]  = "localDBpwd";
    EXEC SQL END DECLARE SECTION;  
    
    EXEC SQL CONNECT :hOracleUser IDENTIFIED BY :hOraclePwd;
    if(sqlca.sqlcode !=0)
    {
        printf( "login fail\n");  
        return 0;
    }
    
    for (n=0; n<10; n++)
    {
        printf( "start of job\n");  
 
        EXEC SQL DECLARE CUR_TEST_PROC CURSOR FOR  
            SELECT SEQ FROM TEST_PROC;
     
        EXEC SQL OPEN CUR_TEST_PROC;         

        while(1)
        {
            EXEC SQL FETCH CUR_TEST_PROC INTO :hSEQ;
                
            sleep(3);            
                
            if(sqlca.sqlcode != 0) 
            {
                if(sqlca.sqlcode == 1403) 
                {
                    printf( "data not found\n");
                    break;
                }
                else 
                {
                    printf( "fetch Error [%20s]\n" , sqlca.sqlerrm.sqlerrmc);
                    break;
                }
            }

            printf("fetch [%d]\n", hSEQ );
        } 
        EXEC SQL CLOSE CUR_TEST_PROC;      
        printf( "end of job\n");  
        
    } /* for */

    return 0;
}




$ proc iname=t.pc
$ cc -o t t.c -L/home/oracle/app/oracle/product/8.1.7/lib -lclntsh -R/home/oracle/app/oracle/product/8.1.7/lib

5. 프로세스 구동
start of job

6. Remote DB Shutdown

7. 에러 확인
fetch Error [ORA-01002: fetch out of sequence]


이거 원인을 파악하려고, 오늘 하루를 다 보냈다. ㅡ.ㅡ


참고 
DB 링크 조회 쿼리
SELECT * FROM USER_DB_LINKS 

시노님 조회 쿼리
SELECT * FROM TAB WHERE TABTYPE='SYNONYM'

oracle 유용한 쿼리

it/db 2006/07/07 11:38 Posted by newtype
- 쿼리 시간 보기
SQL> set timing on;
SQL> set timing off;

- PLAN 정보 보기
SQL> set autot on exp
SQL> 사용자 쿼리
SQL> set autot off
SQL> rollback;

- 현재 연결된 세션

SQL> select count(*) from v$session;


- 세션 정보
SQL> select status, sid from v$session;


- 사용자명 별 연결 세션
SQL> select USERNAME, count(1) from v$session group by USERNAME;


- 케릭터셋 보기
SQL> select * from v$nls_parameters WHERE PARAMETER='NLS_CHARACTERSET'


- 메모리에 올라가 있는 쿼리 보기
SQL> select * from V$SQL_SHARED_MEMORY


- 메모리에 올라가 있는 쿼리 지우기
(CPU, DISK 사용량이 증가하므로, 야간에 작업할 것)
SQL> ALTER SYSTEM FLUSH SHARED_POOL;


- 연결된 커서 갯수 및 쿼리 출력
SQL> SELECT   a.cnt,
         a.user_name,
         b.sql_text,
         a.hash_value
    FROM (SELECT   COUNT (*) cnt,
                   user_name,
                   hash_value
              FROM v$open_cursor
          GROUP BY user_name,
                   hash_value) a,
         v$sqlarea b
   WHERE a.hash_value = b.hash_value AND ROWNUM <= 100
ORDER BY cnt DESC;


- 특정 테이블의 외래키 출력
SQL> SELECT A.TABLE_NAME table_name
     , A.CONSTRAINT_NAME key_name
     , B.TABLE_NAME referencing_table
     , B.CONSTRAINT_NAME foreign_key_name 
     , B.STATUS fk_status  
  FROM USER_CONSTRAINTS A
     , USER_CONSTRAINTS B  
 WHERE A.CONSTRAINT_NAME = B.R_CONSTRAINT_NAME 
   AND B.CONSTRAINT_TYPE = 'R'
   AND A.OWNER = '대문자 계정명'
   AND ( A.TABLE_NAME = '대문자 테이블명' OR B.TABLE_NAME = '대문자 테이블명' )
 ORDER BY 1, 2, 3, 4;


- Oracle Admin계정으로 로긴
Oracle 계정에서
$ sqlplus "/as sysdba"


- Oracle 종료
Oracle 계정에서
$ lsnrctl stop
$ sqlplus "/as sysdba"
SQL> SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]

NORMAL : 현재 사용자가 연결을 끊을때까지 대기 default 옵션
TRANSACTIONAL  : 접속된 사용자들이 새롭게 트랜잭션을 시작할 수 없습니다. 사용자의 트랜잭션이 끝나면 연결이 종료되면 모든 트랙잭션이 종료되면 데이터베이스가 즉시 종료 됩니다.
 IMMEDIATE : 현재 진행중인 SQL문이 완료되지 않으며 현재 사용자의 연결을 즉시 끝으며, 모든 트랜잭션을 롤백합니다.
 ABORT : 강제 종료라고 할수 있으며 다음번 데이터베이스 시작시 인스턴스 복구가 필요합니다.

- Oracle 시작
Oracle 계정에서
$ sqlplus "/as sysdba"
SQL> STARTUP [NORMAL | NOMOUNT | MOUNT]
SQL> exit
$ lsnrctl start



Pro-C 관련 유용한 사이트
http://hobak.emailkorea.net/hobak/
http://www.lsbu.ac.uk/oracle/oracle7/api/doc/PC_22/
http://www.lsbu.ac.uk/oracle/oracle9i/appdev.920/a97269/toc.htm


Pro-C 관련 글
shared_pool 메모리 사용량
Sql 바인딩
하드파싱 쿼리 잡는 방법
$sqltext 에 대해서


TAG oracle, Pro C
Sql CE를 EVC로 구현하고자 하는데 통 답이 없네요

* SQL CE를 에뮬에서만 돌리고자 합니다.
SQL SERVER하고는 연동할 필요가 없습니.

* 사용 Software : EVC4.0, SQL SERVER CE 4.0
                ADO쓰지 않고,, OLEDB사용
* 예제소스 : SQL SERVER CE 인스톨후 NorthwindOleDb 사용


로컬에 그냥 DB파일(sdf)을 사용하여 에뮬로 테스트 할 예정
ADO 쓰지 않고..OLEDB 사용함...
헌데.. "CLSID_SQLSERVERCE_2_0"가 등록 되지 않았다고 함..
어떻게 해야죠?
hr = CoCreateInstance(  CLSID_SQLSERVERCE_2_0,
                           0,
                           CLSCTX_INPROC_SERVER,
                           IID_IDBInitialize,
                           (void**)&pIDBInitialize);
안녕하세요..

sql ce 설치시 sql server 깔아야하나요?

sql ce만 설치했는데, 디비 생성이 않되네요..

그럼 답변 부탁드려요~

수고하세요..

쿼리분석기에서..

it/db 2003/11/26 14:42 Posted by newtype
asp에서 ..

SELECT * FROM product
Do Until rs.EOF
  Update setgoods Set contents='procont' WHERE pro_code=' rs("pro_code")
rs.MoveNext
Loop

이런걸 쿼리분석기에서도 할수있는지요?
방화벽을 사용하고 있습니다.
MS-SQL을 외부 에서 접근할때 열어 주어야할 포트가
어떻게 되나요?

xml -> sql

it/db 2003/08/29 23:42 Posted by newtype
xml를 ms-sql에 집어넣고 싶내..
일단 xml내용은 xml_order와 xml_resp라는 두 군데 들어있따네..

<a id="xmlReq" href="showReqXML()">Show Request XML</a>
            <div id="xmlReqData" style="display: 'none'">
                    <%

                    Response.Write("<textarea cols=60 readonly rows=20>" & xml_order & "</textarea>")
                    %>
            </div>               <br>
            <a id="xmlRes" href="showResXML()">Show Response XML</a>
            <div id="xmlResData" style="display: 'none'">
                    <%
                    Dim dbgXML
                    dbgXML = Replace(xml_resp,"><",">" & Chr(10) & "<")
                    dbxXml = Replace(dbgXml, ">" & Chr(10) & "</","></")
                    Response.Write("<textarea  cols=70 readonly rows=14 wrap=off >" & dbgXML & "</textarea>")
               
            %>
            </div>
이렇게하면 각각 xml로 뿌려주네..
그러나..내가원하는건 xml이 아니네

xml_order의 내용은 ms-sql에 집어넣고 xml_resp의 요소중에  r_approved라는 요소를 끄집어 내어 비교하고 싶네..가능한가?

안가능해도 가능하게 해주게..
캬캬...연삼일째 질문답에서 사는구만 ㅡㅡ;;
sp_executesql 라는 스토어드 프러시져를 사용하면 됩니다.

밑에는 실제 프로젝트에 사용했던 프로시져입니다...^^

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


CREATE      procedure p_GetValue (
 @tagName as nvarchar(20),
 @mode as real output,
 @sp as real output,
 @pv as real output,
 @ivp as real output,
 @alm_a as real output,
 @alm_b as real output,
 @alm_c as real output,
 @alm_dbnd as real output,
 @mvp as real output,
 @out as real output,
 @in as real output,
 @ao as real output
)

as


 declare  @tableName                  nvarchar(30)
 declare  @FieldName_mode        nvarchar(30)
 declare  @FieldName_sp                 nvarchar(30)
 declare  @FieldName_pv                 nvarchar(30)
 declare  @FieldName_ivp                nvarchar(30)
 declare  @FieldName_alm_a         nvarchar(30)
 declare  @FieldName_alm_b         nvarchar(30)
 declare  @FieldName_alm_c        nvarchar(30)
 declare  @FieldName_alm_dbnd         nvarchar(30)
 declare  @FieldName_mvp        nvarchar(30)
 declare  @FieldName_out         nvarchar(30)
 declare  @FieldName_in                 nvarchar(30)
 declare  @FieldName_ao                 nvarchar(30)
 declare  @strSQL                 nvarchar(500)
 declare  @strFieldValue                 nvarchar(500)

begin

 set @strSQL = N'select @tableName = tableName, @FieldName_mode = mode, @FieldName_sp = sp, '
 set @strSQL = @strSQL +  N'@FieldName_pv = pv, @FieldName_ivp = ivp, @FieldName_alm_a = alm_a, '
 set @strSQL = @strSQL +  N'@FieldName_alm_b = alm_b, @FieldName_alm_c = alm_c, @FieldName_alm_dbnd = alm_dbnd, '
 set @strSQL = @strSQL + N'@FieldName_mvp = mvp, @FieldName_out = out, @FieldName_in = [in], @FieldName_ao =ao   '

 set @strSQL = @strSQL + N'from tblTagList where TagList_TagName like ''' + @tagName + ''''

 set  @strFieldValue =  N'@tableName nvarchar(30) output, @FieldName_mode nvarchar(30) output, @FieldName_sp nvarchar(30) output, '
 set  @strFieldValue = @strFieldValue + N'@FieldName_pv  nvarchar(30) output,  @FieldName_ivp nvarchar(30) output, @FieldName_alm_a nvarchar(30) output, '
 set  @strFieldValue = @strFieldValue + N'@FieldName_alm_b nvarchar(30) output,   @FieldName_alm_c nvarchar(30) output, @FieldName_alm_dbnd nvarchar(30) output, '
 set  @strFieldValue = @strFieldValue + N'@FieldName_mvp nvarchar(30) output,@FieldName_out nvarchar(30) output, @FieldName_in nvarchar(30) output,  @FieldName_ao nvarchar(30) output '

 
 exec sp_executesql @strSQL, @strFieldValue,  
               @tableName output, @FieldName_mode output, @FieldName_sp output, @FieldName_pv output, @FieldName_ivp output, @FieldName_alm_a output,
               @FieldName_alm_b output, @FieldName_alm_c output, @FieldName_alm_dbnd output, @FieldName_mvp output,  @FieldName_out output,  
               @FieldName_in output,  @FieldName_ao output


 if @tableName is null  return 0

  set @strSQL =  N'select '

 if @FieldName_mode IS Null
     set @strSQL = @strSQL + N' @mode=null'
 else
     set @strSQL = @strSQL + N' @mode= ' + @FieldName_mode

 if @FieldName_sp IS Null
     set @strSQL = @strSQL + N', @sp=null'
 else
     set @strSQL =  @strSQL + N', @sp=' + @FieldName_sp

 if @FieldName_pv IS Null
    set @strSQL =  @strSQL + N', @pv=null'
 else
    set @strSQL =  @strSQL + N', @pv=' + @FieldName_pv

 if @FieldName_ivp IS Null
    set @strSQL = @strSQL +  N', @ivp=null'
 else
    set @strSQL =  @strSQL + N', @ivp=' + @FieldName_ivp

 if @FieldName_alm_a IS  Null
   set @strSQL =  @strSQL + N', @alm_a=null'
 else
    set @strSQL =  @strSQL + N', @alm_a=' + @FieldName_alm_a

 if @FieldName_alm_b IS  Null
    set @strSQL =  @strSQL + N', @alm_b=null'
 else
    set @strSQL =  @strSQL + N', @alm_b=' + @FieldName_alm_b
 
 if @FieldName_alm_c IS  Null
    set @strSQL =  @strSQL + N', @alm_c=null'
 else
    set @strSQL =  @strSQL + N', @alm_c=' + @FieldName_alm_c

 if @FieldName_alm_dbnd  IS  Null
    set @strSQL =  @strSQL + N', @alm_dbnd=null'
 else
    set @strSQL =  @strSQL + N', @alm_dbnd=' +@FieldName_alm_dbnd

 if @FieldName_mvp IS  Null
    set @strSQL =  @strSQL + N', @mvp=null'
 else
    set @strSQL =  @strSQL + N', @mvp=' + @FieldName_mvp

 if @FieldName_out IS  Null
    set @strSQL =  @strSQL + N', @out =null'
 else
    set @strSQL =  @strSQL + N', @out =' + @FieldName_out

 if @FieldName_in IS  Null
     set @strSQL =  @strSQL + N', @in =null'
 else
     set @strSQL =  @strSQL + N', @in =' + @FieldName_in

 if @FieldName_ao IS  Null
     set @strSQL =  @strSQL + N', @ao =null'
 else
     set @strSQL =  @strSQL + N', @ao =' + @FieldName_ao

   set @strSQL = @strSQL + N' from ' + @tableName

 print @strSQL


 exec sp_executesql @strSQL,
              N'@mode real output, @sp real output, @pv real output, @ivp real output, @alm_a real output,  @alm_b real output,  @alm_c real output, @alm_dbnd real output,  @mvp real output,  @out real output,  @in real output,  @ao real output',
              @mode output, @sp output, @pv output, @ivp output, @alm_a output,  @alm_b output,  @alm_c output, @alm_dbnd output,  @mvp output,  @out output,  @in output,  @ao output
end
exec 라는 명령어를 사용하면 됩니다.

아래는 간단한 예제 입니다.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



CREATE    procedure p_GetFieldValue
(
       @table   NVARCHAR(100),
       @value1 NVARCHAR(200),
       @value2 NVARCHAR(200) = null,
       @value3 NVARCHAR(200) = null,
       @value4 NVARCHAR(200) = null
)
as
begin

       declare @fields varchar(500)        
       declare @sql varchar(500)

       set @fields = @value1 + N' as a'

       if ( @value2 is not null        )
       begin
               set @fields = @fields + N', ' + @value2 + N' as b'
       end

       if ( @value3 is not null        )
       begin
               set @fields = @fields + N', ' + @value3 + N' as c'
       end

       if ( @value4 is not null        )
       begin
               set @fields = @fields + N', ' + @value4 + N' as d'
       end

               
       set @sql =  N'SELECT ' + @fields + N' FROM ' + @table


       exec ( @sql )

end

isql.exe를 이용한 sql문서를 실행해 보자

it/db 2003/07/18 18:02 Posted by newtype
sql을 설치한 폴더에서 80\Tools\Binn에 보면..
( 저의 경우는 C:\Program Files\Microsoft SQL Server\80\Tools\Binn 더 군요)
isql.exe라는 파일이 있습니다.

이 파일을 이용한면 sql문서를 실행 할 수가 있는데요.

sql문서는 일반 text 파일이어야 하구요.
use문을 통해서 작업할
DB를 정해주어야 정상 작동 합니다.

아래는 배치파일을 이용해 이번 프로젝트때 사용한
파일입니다.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
[CODE type=dos]
@echo off
echo.
echo Genex Application Update Autobatch File
echo.
echo by newtype
echo write 2003/7/18
echo.
echo.
echo.
echo.
echo Start Update File Coping....
echo.
copy MobileManager.exe .\Mobilemanager\Mobilemanager\Mobilemanager.exe /Y copy DLLAlarm.dll .\Presentation\DLLAlarm.dll /Y
copy Presentation.exe .\Presentation\Presentation.exe /Y
echo.
echo Start DB Update....
echo.
isql -U sa -P sa -i update.sql > result.txt
echo.
echo Delete Template file...
echo.
del MobileManager.exe
del DLLAlarm.dll
del Presentation.exe
del isql.exe
del update.sql
echo.
echo Complite Update!.
echo.
echo Please Delete this "Update.bat" in this folder
echo.
pause
[/CODE]

mysql은 oledb안되남^^;;

it/db 2003/01/09 18:10 Posted by newtype
mysql은 oledb안되남^^;;


   * 게시물 성격상 공부방에서 질문답으로 관리자가 이동했습니다.

mysql에서 테이블 자세히(?) 보기

it/db 2003/01/09 11:32 Posted by newtype
mysql에서 show tables;하면 table을 주욱 보여주자나요..근디 제가 만든 테이블은 테이블명만 덜렁 나오고 컬럼 명같은것두 안나오던데...ms-sql처럼 그 테이블에 관련된 칼럼명 및 입력되어잇는 테이터..칼럼속성 이런걸 자세히 볼수는 없을까요?

글구 이건 여담인디..질문답에서 db선택하고 들어왓는디..또 선택해야하네요..구차는딩..;;;