[prototype.js] Element 생성하기
new Element(tagName[, attributes])
예제
일반 스크립트
ele.setAttribute('class', 'link');
ele.setAttribute('href', '/popup.html');
ele.appendChild(document.createTextNode("팝업열기"));
prototype를 이용한 스크립트
엘리먼트 추가, 삭제 예제
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta http-equiv="keywords" content="enter,your,keywords,here" />
<meta http-equiv="description" content="A short description of this page." />
<meta http-equiv="content-type" content="text/html; charset=EUC-KR" />
<script type="text/javascript">
var count = 0;
/**
* 아이템 추가
*/
function appendItem(){
count++;
var newItem = document.createElement("div");
newItem.setAttribute("id", "item_" + count);
var html = '새로 추가된 아이템['+count+'] <input type="button" value="삭제" onclick="removeItem('+ count +')" />';
newItem.innerHTML = html;
var itemListNode = document.getElementById('itemList');
itemListNode.appendChild(newItem);
}
/**
* 아이템 삭제
*/
function removeItem(idCount){
var item = document.getElementById("item_" + idCount);
if(item != null){
item.parentNode.removeChild(item);
}
}
</script>
</head>
<body>
<input type="button" value="추가" onclick="appendItem()" />
<div id="itemList"></div>
</body>
</html>
'개발 > Javascript' 카테고리의 다른 글
[javascript] 현재 페이지를 시작페이지로 설정하기 (0) | 2009.09.17 |
---|---|
[javascript] 바탕화면에 사이트 바로가기 만들기 (0) | 2009.09.15 |
[HTML/JavaScript] Select list move options (0) | 2009.08.11 |
[HTML/JavaScript ]select box option 추가 삭제 예제 (0) | 2009.08.11 |
HTML 특수문자코드표 (0) | 2009.07.22 |
[HTML/JavaScript] Select list move options
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="JavaScript" type="text/javascript">
<!--
/**
* option 추가
**/
function addOption(theSel, theText, theValue){
var newOpt = new Option(theText, theValue);
var selLength = theSel.length;
theSel.options[selLength] = newOpt;
}
/**
* option 삭제
**/
function deleteOption(theSel, theIndex){
var selLength = theSel.length;
if(selLength>0){
theSel.options[theIndex] = null;
}
}
/**
* option 삭제
**/
function moveOptions(theSelFrom, theSelTo){
var selLength = theSelFrom.length;
var selectedText = new Array();
var selectedValues = new Array();
var selectedCount = 0;
var i;
// Find the selected Options in reverse order
// and delete them from the 'from' Select.
for(i=selLength-1; i>=0; i--){
if(theSelFrom.options[i].selected){
selectedText[selectedCount] = theSelFrom.options[i].text;
selectedValues[selectedCount] = theSelFrom.options[i].value;
deleteOption(theSelFrom, i);
selectedCount++;
}
}
// Add the selected text/values in reverse order.
// This will add the Options to the 'to' Select
// in the same order as they were in the 'from' Select.
for(i=selectedCount-1; i>=0; i--){
addOption(theSelTo, selectedText[i], selectedValues[i]);
}
if(NS4) history.go(0);
}
</script>
<form action="yourpage.asp" method="post">
<table border="0">
<tr>
<td>
<select name="sel1" size="10" multiple="multiple">
<option value="1">Left1</option>
<option value="2">Left2</option>
<option value="3">Left3</option>
<option value="4">Left4</option>
<option value="5">Left5</option>
</select>
</td>
<td align="center" valign="middle">
<input type="button" value="-->"
onclick="moveOptions(this.form.sel1, this.form.sel2);" /><br />
<input type="button" value="<--"
onclick="moveOptions(this.form.sel2, this.form.sel1);" />
</td>
<td>
<select name="sel2" size="10" multiple="multiple">
<option value="1">Right1</option>
<option value="2">Right2</option>
<option value="3">Right3</option>
<option value="4">Right4</option>
<option value="5">Right5</option>
</select>
</td>
</tr>
</table>
</form>
</BODY>
</HTML>
출처 : http://www.mredkj.com/tutorials/tutorial_mixed2b.html
'개발 > Javascript' 카테고리의 다른 글
[javascript] 바탕화면에 사이트 바로가기 만들기 (0) | 2009.09.15 |
---|---|
[prototype.js] Element 생성하기 (0) | 2009.09.09 |
[HTML/JavaScript ]select box option 추가 삭제 예제 (0) | 2009.08.11 |
HTML 특수문자코드표 (0) | 2009.07.22 |
[Event] observe 에서의 onload와 dom:loaded 의 차이 (0) | 2009.05.21 |
[HTML/JavaScript ]select box option 추가 삭제 예제
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script language="JavaScript" type="text/javascript">
<!--
var count1 = 0;
var count2 = 0;
* 선택된 option의 이전에 새로운 option 을 추가한다.
**/
function insertOptionBefore(num){
var elSel = document.getElementById('selectX');
if(elSel.selectedIndex >= 0) {
var elOptNew = document.createElement('option');
elOptNew.text = 'Insert' + num;
elOptNew.value = 'insert' + num;
var elOptOld = elSel.options[elSel.selectedIndex];
try {
elSel.add(elOptNew, elOptOld); // standards compliant; doesn't work in IE
}catch(ex){
elSel.add(elOptNew, elSel.selectedIndex); // IE only
}
}
}
* 선택된 옵션을 삭제한다.
**/
function removeOptionSelected(){
var elSel = document.getElementById('selectX');
var i;
for (i = elSel.length - 1; i>=0; i--) {
if (elSel.options[i].selected) {
elSel.remove(i);
}
}
}
* 마지막에 새로운 option을 추가한다.
**/
var elOptNew = document.createElement('option');
elOptNew.text = 'Append' + num;
elOptNew.value = 'append' + num;
var elSel = document.getElementById('selectX');
try {
elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
}catch(ex) {
elSel.add(elOptNew); // IE only
}
}
/**
* 마지막 옵션을 삭제한다.
**/
function removeOptionLast(){
var elSel = document.getElementById('selectX');
if (elSel.length > 0){
elSel.remove(elSel.length - 1);
}
}
//-->
</script>
</HEAD>
<form>
<input type="button" value="이전 추가" onclick="insertOptionBefore(count1++);" />Insert Before Selected<br />
<input type="button" value="삭제" onclick="removeOptionSelected();" />Remove Selected<br />
<select id="selectX" size="10">
<option value="original1" selected="selected">Orig1</option>
<option value="original2">Orig2</option>
</select>
<br />
<input type="button" value="마지막 추가" onclick="appendOptionLast(count2++);" />Append Last<br />
<input type="button" value="마지막 삭제" onclick="removeOptionLast();" />Remove Last
</form>
</BODY>
</HTML>
'개발 > Javascript' 카테고리의 다른 글
[prototype.js] Element 생성하기 (0) | 2009.09.09 |
---|---|
[HTML/JavaScript] Select list move options (0) | 2009.08.11 |
HTML 특수문자코드표 (0) | 2009.07.22 |
[Event] observe 에서의 onload와 dom:loaded 의 차이 (0) | 2009.05.21 |
[IE8] 웹 표준 개발자의 IE8 웹사이트 호환성 대응 (0) | 2009.04.13 |
HTML 특수문자코드표
표현문자 |
숫자표현 |
문자표현 |
설명 |
- |
�- |
- |
사용하지 않음 |
space |
	 |
- |
수평탭 |
space |
|
- |
줄 삽입 |
- |
- |
- |
사용하지 않음 |
space |
  |
- |
여백 |
! |
! |
- |
느낌표 |
" |
" |
" |
따옴표 |
# |
# |
- |
숫자기호 |
$ |
$ |
- |
달러 |
% |
% |
- |
백분율 기호 |
& |
& |
& |
Ampersand |
' |
' |
- |
작은 따옴표 |
( |
( |
- |
왼쪽 괄호 |
) |
) |
- |
오른쪽 괄호 |
* |
* |
- |
아스트릭 |
+ |
+ |
- |
더하기 기호 |
, |
, |
- |
쉼표 |
- |
- |
- |
Hyphen |
. |
. |
- |
마침표 |
/ |
/ |
- |
Solidus (slash) |
0 - 9 |
0-9 |
- |
0부터 9까지 |
: |
: |
- |
콜론 |
; |
; |
- |
세미콜론 |
< |
< |
< |
보다 작은 |
= |
= |
- |
등호 |
> |
> |
> |
보다 큰 |
? |
? |
- |
물음표 |
@ |
@ |
- |
Commercial at |
A - Z |
A-Z |
- |
A부터 Z까지 |
[ |
[ |
- |
왼쪽 대괄호 |
\ |
\ |
- |
역슬래쉬 |
] |
] |
- |
오른쪽 대괄호 |
^ |
^ |
- |
탈자부호 |
_ |
_ |
- |
수평선 |
` |
` |
- |
Acute accent |
a - z |
a-z |
- |
a부터 z까지 |
{ |
{ |
- |
왼쪽 중괄호 |
| |
| |
- |
수직선 |
} |
} |
- |
오른쪽 중괄호 |
~ |
~ |
- |
꼬리표 |
- |
-Ÿ |
- |
사용하지 않음 |
  |
|
Non-breaking space | |
¡ |
¡ |
¡ |
거꾸로된 느낌표 |
¢ |
¢ |
¢ |
센트 기호 |
£ |
£ |
£ |
파운드 |
¤ |
¤ |
¤ |
현재 환율 |
¥ |
¥ |
¥ |
엔 |
| |
¦ |
¦ |
끊어진 수직선 |
§ |
§ |
§ |
섹션 기호 |
¨ |
¨ |
¨ |
움라우트 |
ⓒ |
© |
© |
저작권 |
ª |
ª |
ª |
Feminine ordinal |
≪ |
« |
« |
왼쪽 꺾인 괄호 |
¬ |
¬ |
¬ |
부정 |
|
­ |
­ |
Soft hyphen |
? |
® |
® |
등록상표 |
&hibar; |
¯ |
¯ |
Macron accent |
° |
° |
° |
Degree sign |
± |
± |
± |
Plus or minus |
² |
² |
² |
Superscript two |
³ |
³ |
³ |
Superscript three |
´ |
´ |
´ |
Acute accent |
μ |
µ |
µ |
Micro sign (Mu) |
¶ |
¶ |
¶ |
문단기호 |
· |
· |
· |
Middle dot |
¸ |
¸ |
¸ |
Cedilla |
¹ |
¹ |
¹ |
Superscript one |
º |
º |
º |
Masculine ordinal |
≫ |
» |
» |
오른쪽 꺾인 괄호 |
¼ |
¼ |
¼ |
4분의 1 |
½ |
½ |
½ |
2분의 1 |
¾ |
¾ |
¾ |
4분의 3 |
¿ |
¿ |
¿ |
거꾸로된 물음표 |
A |
À |
À |
Capital A, grave accent |
A |
Á |
Á |
Capital A, acute accent |
A |
 |
 |
Capital A, circumflex accent |
A |
à |
à |
Capital A, tilde |
A |
Ä |
Ä |
Capital A, dieresis or umlaut mark |
A |
Å |
Å |
Capital A, ring (Angstrom) |
Æ |
Æ |
Æ |
Capital AE diphthong (ligature) |
C |
Ç |
Ç |
Capital C, cedilla |
E |
È |
È |
Capital E, grave accent |
E |
É |
É |
Capital E, acute accent |
E |
Ê |
Ê |
Capital E, circumflex accent |
E |
Ë |
Ë |
Capital E, dieresis or umlaut mark |
I |
Ì |
Ì |
Capital I, grave accent |
I |
Í |
Í |
Capital I, acute accent |
I |
Î |
Î |
Capital I, circumflex accent |
I |
Ï |
Ï |
Capital I, dieresis or umlaut mark |
Ð |
Ð |
Ð |
Capital Eth, Icelandic |
N |
Ñ |
Ñ |
Capital N, tilde |
O |
Ò |
Ò |
Capital O, grave accent |
O |
Ó |
Ó |
Capital O, acute accent |
O |
Ô |
Ô |
Capital O, circumflex accent |
O |
Õ |
Õ |
Capital O, tilde |
O |
Ö |
Ö |
Capital O, dieresis or umlaut mark |
× |
× |
× |
Multiply sign |
Ø |
Ø |
Ø |
width="130"Capital O, slash |
U |
Ù |
Ù |
Capital U, grave accent |
U |
Ú |
Ú |
Capital U, acute accent |
U |
Û |
Û |
Capital U, circumflex accent |
U |
Ü |
Ü |
Capital U, dieresis or umlaut mark |
Y |
Ý |
Ý |
Capital Y, acute accent |
Þ |
Þ |
Þ |
Capital Thorn, Icelandic |
ß |
ß |
ß |
Small sharp s, German (sz ligature) |
a |
à |
à |
Small a, grave accent |
a |
á |
á |
Small a, acute accent |
a |
â |
â |
Small a, circumflex accent |
a |
ã |
ã |
Small a, tilde |
a |
ä |
ä |
Small a, dieresis or umlaut mark |
a |
å |
å |
Small a, ring |
æ |
æ |
æ |
Small ae diphthong (ligature) |
c |
ç |
ç |
Small c, cedilla |
e |
è |
è |
Small e, grave accent |
e |
é |
é |
Small e, acute accent |
e |
ê |
ê |
Small e, circumflex accent |
e |
ë |
ë |
Small e, dieresis or umlaut mark |
i |
ì |
ì |
Small i, grave accent |
i |
í |
í |
Small i, acute accent |
i |
î |
î |
Small i, circumflex accent |
i |
ï |
ï |
Small i, dieresis or umlaut mark |
ð |
ð |
ð |
Small eth, Icelandic |
n |
ñ |
ñ |
Small n, tilde |
o |
ò |
ò |
Small o, grave accent |
o |
ó |
ó |
Small o, acute accent |
o |
ô |
ô |
Small o, circumflex accent |
o |
õ |
õ |
Small o, tilde |
o |
ö |
ö |
Small o, dieresis or umlaut mark |
÷ |
÷ |
÷ |
Division sign |
ø |
ø |
ø |
Small o, slash |
u |
ù |
ù |
Small u, grave accent |
u |
ú |
ú |
Small u, acute accent |
u |
û |
û |
Small u, circumflex accent |
u |
ü |
ü |
Small u, dieresis or umlaut mark |
y |
ý |
ý |
Small y, acute accent |
þ |
þ |
þ |
Small thorn, Icelandic |
y |
ÿ |
ÿ |
Small y, dieresis or umlaut mark |
'개발 > Javascript' 카테고리의 다른 글
[HTML/JavaScript] Select list move options (0) | 2009.08.11 |
---|---|
[HTML/JavaScript ]select box option 추가 삭제 예제 (0) | 2009.08.11 |
[Event] observe 에서의 onload와 dom:loaded 의 차이 (0) | 2009.05.21 |
[IE8] 웹 표준 개발자의 IE8 웹사이트 호환성 대응 (0) | 2009.04.13 |
[javascript] select box (0) | 2009.02.16 |
Multi Table Insert
WHEN 조건1 THEN
INTO 테이블1
WHEN 조건2 THEN
INTO 테이블2
ELSE
INTO 테이블0
SELECT 구문;
예제
WHEN TO_CHAR (order_date, 'YYYY') = '1990'
THEN
INTO order_1990
WHEN TO_CHAR (order_date, 'YYYY') = '1991'
THEN
INTO order_1991
WHEN TO_CHAR (order_date, 'YYYY') = '1992'
THEN
INTO order_1992
SELECT order_id, order_date, customer_id, order_total, sales_rep_id
FROM orders;
'개발 > Database' 카테고리의 다른 글
mysql 최근 자료 가져오기 (0) | 2009.10.06 |
---|---|
[oracle] 자주 쓰는 숫자 함수 (0) | 2009.09.27 |
동일 칼럼을 가지나, 이름을 달리하는 테이블 만들기 (0) | 2009.07.14 |
ER-Win에서 DB Table 가져오기 (0) | 2009.05.13 |
MSSQL2000, 2005 테이블 명세서 추출 쿼리문 (0) | 2009.05.13 |
동일 칼럼을 가지나, 이름을 달리하는 테이블 만들기
order_id NUMBER(12),
order_date DATE,
customer_id NUMBER(6),
order_total NUMBER(8, 2),
sales_rep_id NUMBER(6)
);
CREATE TABLE order_1999 AS SELECT * FROM order_1990;
CREATE TABLE order_2000 AS SELECT * FROM order_1990;
CREATE TABLE order_2001 AS SELECT * FROM order_1990;
'개발 > Database' 카테고리의 다른 글
[oracle] 자주 쓰는 숫자 함수 (0) | 2009.09.27 |
---|---|
Multi Table Insert (0) | 2009.07.14 |
ER-Win에서 DB Table 가져오기 (0) | 2009.05.13 |
MSSQL2000, 2005 테이블 명세서 추출 쿼리문 (0) | 2009.05.13 |
oracle 시작과 종료 (0) | 2009.05.07 |
[Event] observe 에서의 onload와 dom:loaded 의 차이
기본적으로 대부분의 스크립터는 "페이지가 모두 로드 되었다." 라는 전제는
이미지를 포함한 모든 리소스가 로드완료 (즉 하단 상태표시줄에 완료 라고 찍히는 타이밍)을 페이지가 로드 되었다 라고 인식한다.
하지만 실제로(물론 위의 설명이 가장 적합하지만) 스크립트가 실행되는데는 모든 리소스를 전제로 기능을 추가하지만 그렇지 않아야 하는 경우도 있다. 즉. dom만 있으면 되는 경우이다.
(대표적으로 CSS가 그렇다. 이미지도 하나의 엘리먼트로 인식하라. src에 있는 이미지가 다운로드 되는것과 img 엘리먼트가 dom로드되는것은 틀린이야기이다.)
prototype에서는 이에 대해서 서로 다른 이벤트로드를 지원하는데.
Event.observe(window,"load",handler)
Event.observe(document,"dom:loaded",handler)
이다.
1. 웹페이지의 모든 리소스까지 로드상태
Event.observe(window,"load",handler)
웹페이지의 모든 리소스를 로드한 상태를 말한다. 이미지 및 플래쉬까지 로드된 상태이다.간혹가다 플래쉬 경로가 맞지 않아서 로드되지 않고 지연되는 경우에는 위의 이벤트는 그 지연이 끝날때까지 기다리게 된다.
2. 웹페이지의 dom만 로드된상태.
Event.observe(document,"dom:loaded",handler)
웹페이지의 모든 dom만 로드된 상태이다. body안에 있는 엘리먼트가 구성되었을때의 동작이다.여기에서는 css나 이미지의 다운로드 같은 상태는 포함되지 않는다.
'개발 > Javascript' 카테고리의 다른 글
[HTML/JavaScript ]select box option 추가 삭제 예제 (0) | 2009.08.11 |
---|---|
HTML 특수문자코드표 (0) | 2009.07.22 |
[IE8] 웹 표준 개발자의 IE8 웹사이트 호환성 대응 (0) | 2009.04.13 |
[javascript] select box (0) | 2009.02.16 |
[HTML] 제어 문자 (0) | 2009.01.16 |
ER-Win에서 DB Table 가져오기
ER-Win에서 ERD 작성을 하다보면 기존 DB에서 테이블 정보를 가져와야 할 때가 있다.
Tools > Reverse Engineer
'개발 > Database' 카테고리의 다른 글
Multi Table Insert (0) | 2009.07.14 |
---|---|
동일 칼럼을 가지나, 이름을 달리하는 테이블 만들기 (0) | 2009.07.14 |
MSSQL2000, 2005 테이블 명세서 추출 쿼리문 (0) | 2009.05.13 |
oracle 시작과 종료 (0) | 2009.05.07 |
Toad 단축키 (0) | 2009.04.18 |
MSSQL2000, 2005 테이블 명세서 추출 쿼리문
--//SQL Database documentation script
--//Description: T-SQL script to generate the database document for SQL server 2000/2005
Declare @i Int, @maxi Int
Declare @j Int, @maxj Int
Declare @sr int
Declare @Output varchar(4000)
--Declare @tmpOutput varchar(max)
Declare @SqlVersion varchar(5)
Declare @last varchar(155), @current varchar(255), @typ varchar(255), @description varchar(4000)
create Table #Tables (id int identity(1, 1), Object_id int, Name varchar(155), Type varchar(20), [description] varchar(4000))
create Table #Columns (id int identity(1,1), Name varchar(155), Type Varchar(155), Nullable varchar(2), [description] varchar(4000))
create Table #Fk(id int identity(1,1), Name varchar(155), col Varchar(155), refObj varchar(155), refCol varchar(155))
create Table #Constraint(id int identity(1,1), Name varchar(155), col Varchar(155), definition varchar(1000))
create Table #Indexes(id int identity(1,1), Name varchar(155), Type Varchar(25), cols varchar(1000))
If (substring(@@VERSION, 1, 25 ) = 'Microsoft SQL Server 2005')
set @SqlVersion = '2005'
else if (substring(@@VERSION, 1, 26 ) = 'Microsoft SQL Server 2000')
set @SqlVersion = '2000'
else
set @SqlVersion = '2005'
Print '<head>'
Print '<title>::' + DB_name() + '::</title>'
Print '<style>'
Print ' body {'
Print ' font-family:verdana;'
Print ' font-size:9pt;'
Print ' }'
Print ' td {'
Print ' font-family:verdana;'
Print ' font-size:9pt;'
Print ' }'
Print ' th {'
Print ' font-family:verdana;'
Print ' font-size:9pt;'
Print ' background:#d3d3d3;'
Print ' }'
Print ' table'
Print ' {'
Print ' background:#d3d3d3;'
Print ' }'
Print ' tr'
Print ' {'
Print ' background:#ffffff;'
Print ' }'
Print ' </style>'
Print '</head>'
Print '<body>'
set nocount on
if @SqlVersion = '2000'
begin
insert into #Tables (Object_id, Name, Type, [description])
--FOR 2000
select object_id(table_name), '[' + table_schema + '].[' + table_name + ']',
case when table_type = 'BASE TABLE' then 'Table' else 'View' end,
cast(p.value as varchar(4000))
from information_schema.tables t
left outer join sysproperties p on p.id = object_id(t.table_name) and smallid = 0 and p.name = 'MS_Description'
order by table_type, table_schema, table_name
end
else if @SqlVersion = '2005'
begin
insert into #Tables (Object_id, Name, Type, [description])
--FOR 2005
Select o.object_id, '[' + s.name + '].[' + o.name + ']',
case when type = 'V' then 'View' when type = 'U' then 'Table' end,
cast(p.value as varchar(4000))
from sys.objects o
left outer join sys.schemas s on s.schema_id = o.schema_id
left outer join sys.extended_properties p on p.major_id = o.object_id and minor_id = 0 and p.name = 'MS_Description'
where type in ('U', 'V')
order by type, s.name, o.name
end
Set @maxi = @@rowcount
set @i = 1
print '<table border="0" cellspacing="0" cellpadding="0" width="550px" align="center"><tr><td colspan="3" style="height:50;font-size:14pt;text-align:center;"><a name="index"></a><b>Index</b></td></tr></table>'
print '<table border="0" cellspacing="1" cellpadding="0" width="550px" align="center"><tr><th>Sr</th><th>Object</th><th>Type</th></tr>'
While(@i <= @maxi)
begin
select @Output = '<tr><td align="center">' + Cast((@i) as varchar) + '</td><td><a href="#' + Type + ':' + name + '">' + name + '</a></td><td>' + Type + '</td></tr>'
from #Tables where id = @i
print @Output
set @i = @i + 1
end
print '</table><br />'
set @i = 1
While(@i <= @maxi)
begin
--table header
select @Output = '<tr><th align="left"><a name="' + Type + ':' + name + '"></a><b>' + Type + ':' + name + '</b></th></tr>', @description = [description]
from #Tables where id = @i
print '<br /><br /><br /><table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td align="right"><a href="#index">Index</a></td></tr>'
print @Output
print '</table><br />'
print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Description</b></td></tr><tr><td>' + isnull(@description, '') + '</td></tr></table><br />'
--table columns
truncate table #Columns
if @SqlVersion = '2000'
begin
insert into #Columns (Name, Type, Nullable, [description])
--FOR 2000
Select c.name,
type_name(xtype) + (
case when (type_name(xtype) = 'varchar' or type_name(xtype) = 'nvarchar' or type_name(xtype) ='char' or type_name(xtype) ='nchar')
then '(' + cast(length as varchar) + ')'
when type_name(xtype) = 'decimal'
then '(' + cast(prec as varchar) + ',' + cast(scale as varchar) + ')'
else ''
end
),
case when isnullable = 1 then 'Y' else 'N' end,
cast(p.value as varchar(8000))
from syscolumns c
inner join #Tables t on t.object_id = c.id
left outer join sysproperties p on p.id = c.id and p.smallid = c.colid and p.name = 'MS_Description'
where t.id = @i
order by c.colorder
end
else if @SqlVersion = '2005'
begin
insert into #Columns (Name, Type, Nullable, [description])
--FOR 2005
Select c.name,
type_name(user_type_id) + (
case when (type_name(user_type_id) = 'varchar' or type_name(user_type_id) = 'nvarchar' or type_name(user_type_id) ='char' or type_name(user_type_id) ='nchar')
then '(' + cast(max_length as varchar) + ')'
when type_name(user_type_id) = 'decimal'
then '(' + cast([precision] as varchar) + ',' + cast(scale as varchar) + ')'
else ''
end
),
case when is_nullable = 1 then 'Y' else 'N' end,
cast(p.value as varchar(4000))
from sys.columns c
inner join #Tables t on t.object_id = c.object_id
left outer join sys.extended_properties p on p.major_id = c.object_id and p.minor_id = c.column_id and p.name = 'MS_Description'
where t.id = @i
order by c.column_id
end
Set @maxj = @@rowcount
set @j = 1
print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Table Columns</b></td></tr></table>'
print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Datatype</th><th>Nullable</th><th>Description</th></tr>'
While(@j <= @maxj)
begin
select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="150px">' + isnull(name,'') + '</td><td width="150px">' + upper(isnull(Type,'')) + '</td><td width="50px" align="center">' + isnull(Nullable,'N') + '</td><td>' + isnull([description],'') + '</td></tr>'
from #Columns where id = @j
print @Output
Set @j = @j + 1;
end
print '</table><br />'
--reference key
truncate table #FK
if @SqlVersion = '2000'
begin
insert into #FK (Name, col, refObj, refCol)
-- FOR 2000
select object_name(constid), s.name, object_name(rkeyid) , s1.name
from sysforeignkeys f
inner join sysobjects o on o.id = f.constid
inner join syscolumns s on s.id = f.fkeyid and s.colorder = f.fkey
inner join syscolumns s1 on s1.id = f.rkeyid and s1.colorder = f.rkey
inner join #Tables t on t.object_id = f.fkeyid
where t.id = @i
order by 1
end
else if @SqlVersion = '2005'
begin
insert into #FK (Name, col, refObj, refCol)
-- FOR 2005
select f.name, COL_NAME (fc.parent_object_id, fc.parent_column_id) , object_name(fc.referenced_object_id) , COL_NAME (fc.referenced_object_id, fc.referenced_column_id)
from sys.foreign_keys f
inner join sys.foreign_key_columns fc on f.object_id = fc.constraint_object_id
inner join #Tables t on t.object_id = f.parent_object_id
where t.id = @i
order by f.name
end
Set @maxj = @@rowcount
set @j = 1
if (@maxj >0)
begin
print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Refrence Keys</b></td></tr></table>'
print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Column</th><th>Reference To</th></tr>'
While(@j <= @maxj)
begin
select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="150px">' + isnull(name,'') + '</td><td width="150px">' + isnull(col,'') + '</td><td>[' + isnull(refObj,'N') + '].[' + isnull(refCol,'N') + ']</td></tr>'
from #FK where id = @j
print @Output
Set @j = @j + 1;
end
print '</table><br />'
end
--Default Constraints
truncate table #Constraint
if @SqlVersion = '2000'
begin
insert into #Constraint (Name, col, definition)
select object_name(c.constid), col_name(c.id, c.colid), s.text
from sysconstraints c
inner join #Tables t on t.object_id = c.id
left outer join syscomments s on s.id = c.constid
where t.id = @i
and
convert(varchar,+ (c.status & 1)/1)
+ convert(varchar,(c.status & 2)/2)
+ convert(varchar,(c.status & 4)/4)
+ convert(varchar,(c.status & 8)/8)
+ convert(varchar,(c.status & 16)/16)
+ convert(varchar,(c.status & 32)/32)
+ convert(varchar,(c.status & 64)/64)
+ convert(varchar,(c.status & 128)/128) = '10101000'
end
else if @SqlVersion = '2005'
begin
insert into #Constraint (Name, col, definition)
select c.name, col_name(parent_object_id, parent_column_id), c.definition
from sys.default_constraints c
inner join #Tables t on t.object_id = c.parent_object_id
where t.id = @i
order by c.name
end
Set @maxj = @@rowcount
set @j = 1
if (@maxj >0)
begin
print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Default Constraints</b></td></tr></table>'
print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Column</th><th>Value</th></tr>'
While(@j <= @maxj)
begin
select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="250px">' + isnull(name,'') + '</td><td width="150px">' + isnull(col,'') + '</td><td>' + isnull(definition,'') + '</td></tr>'
from #Constraint where id = @j
print @Output
Set @j = @j + 1;
end
print '</table><br />'
end
--Check Constraints
truncate table #Constraint
if @SqlVersion = '2000'
begin
insert into #Constraint (Name, col, definition)
select object_name(c.constid), col_name(c.id, c.colid), s.text
from sysconstraints c
inner join #Tables t on t.object_id = c.id
left outer join syscomments s on s.id = c.constid
where t.id = @i
and ( convert(varchar,+ (c.status & 1)/1)
+ convert(varchar,(c.status & 2)/2)
+ convert(varchar,(c.status & 4)/4)
+ convert(varchar,(c.status & 8)/8)
+ convert(varchar,(c.status & 16)/16)
+ convert(varchar,(c.status & 32)/32)
+ convert(varchar,(c.status & 64)/64)
+ convert(varchar,(c.status & 128)/128) = '00101000'
or convert(varchar,+ (c.status & 1)/1)
+ convert(varchar,(c.status & 2)/2)
+ convert(varchar,(c.status & 4)/4)
+ convert(varchar,(c.status & 8)/8)
+ convert(varchar,(c.status & 16)/16)
+ convert(varchar,(c.status & 32)/32)
+ convert(varchar,(c.status & 64)/64)
+ convert(varchar,(c.status & 128)/128) = '00100100')
end
else if @SqlVersion = '2005'
begin
insert into #Constraint (Name, col, definition)
select c.name, col_name(parent_object_id, parent_column_id), definition
from sys.check_constraints c
inner join #Tables t on t.object_id = c.parent_object_id
where t.id = @i
order by c.name
end
Set @maxj = @@rowcount
set @j = 1
if (@maxj >0)
begin
print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Check Constraints</b></td></tr></table>'
print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Column</th><th>Definition</th></tr>'
While(@j <= @maxj)
begin
select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="250px">' + isnull(name,'') + '</td><td width="150px">' + isnull(col,'') + '</td><td>' + isnull(definition,'') + '</td></tr>'
from #Constraint where id = @j
print @Output
Set @j = @j + 1;
end
print '</table><br />'
end
--Triggers
truncate table #Constraint
if @SqlVersion = '2000'
begin
insert into #Constraint (Name)
select tr.name
FROM sysobjects tr
inner join #Tables t on t.object_id = tr.parent_obj
where t.id = @i and tr.type = 'TR'
order by tr.name
end
else if @SqlVersion = '2005'
begin
insert into #Constraint (Name)
SELECT tr.name
FROM sys.triggers tr
inner join #Tables t on t.object_id = tr.parent_id
where t.id = @i
order by tr.name
end
Set @maxj = @@rowcount
set @j = 1
if (@maxj >0)
begin
print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Triggers</b></td></tr></table>'
print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Description</th></tr>'
While(@j <= @maxj)
begin
select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="150px">' + isnull(name,'') + '</td><td></td></tr>'
from #Constraint where id = @j
print @Output
Set @j = @j + 1;
end
print '</table><br />'
end
--Indexes
truncate table #Indexes
if @SqlVersion = '2000'
begin
insert into #Indexes (Name, type, cols)
select i.name, case when i.indid = 0 then 'Heap' when i.indid = 1 then 'Clustered' else 'Nonclustered' end , c.name
from sysindexes i
inner join sysindexkeys k on k.indid = i.indid and k.id = i.id
inner join syscolumns c on c.id = k.id and c.colorder = k.colid
inner join #Tables t on t.object_id = i.id
where t.id = @i and i.name not like '_WA%'
order by i.name, i.keycnt
end
else if @SqlVersion = '2005'
begin
insert into #Indexes (Name, type, cols)
select i.name, case when i.type = 0 then 'Heap' when i.type = 1 then 'Clustered' else 'Nonclustered' end, col_name(i.object_id, c.column_id)
from sys.indexes i
inner join sys.index_columns c on i.index_id = c.index_id and c.object_id = i.object_id
inner join #Tables t on t.object_id = i.object_id
where t.id = @i
order by i.name, c.column_id
end
Set @maxj = @@rowcount
set @j = 1
set @sr = 1
if (@maxj >0)
begin
print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Indexes</b></td></tr></table>'
print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Type</th><th>Columns</th></tr>'
set @Output = ''
set @last = ''
set @current = ''
While(@j <= @maxj)
begin
select @current = isnull(name,'') from #Indexes where id = @j
if @last <> @current and @last <> ''
begin
print '<tr><td width="20px" align="center">' + Cast((@sr) as varchar) + '</td><td width="150px">' + @last + '</td><td width="150px">' + @typ + '</td><td>' + @Output + '</td></tr>'
set @Output = ''
set @sr = @sr + 1
end
select @Output = @Output + cols + '<br />' , @typ = type
from #Indexes where id = @j
set @last = @current
Set @j = @j + 1;
end
if @Output <> ''
begin
print '<tr><td width="20px" align="center">' + Cast((@sr) as varchar) + '</td><td width="150px">' + @last + '</td><td width="150px">' + @typ + '</td><td>' + @Output + '</td></tr>'
end
print '</table><br />'
end
Set @i = @i + 1;
--Print @Output
end
Print '</body>'
Print '</html>'
drop table #Tables
drop table #Columns
drop table #FK
drop table #Constraint
drop table #Indexes
set nocount off
'개발 > Database' 카테고리의 다른 글
동일 칼럼을 가지나, 이름을 달리하는 테이블 만들기 (0) | 2009.07.14 |
---|---|
ER-Win에서 DB Table 가져오기 (0) | 2009.05.13 |
oracle 시작과 종료 (0) | 2009.05.07 |
Toad 단축키 (0) | 2009.04.18 |
[oracle] decode 함수 (1) | 2009.01.16 |
oracle 시작과 종료
#Oracle start
오라클 시작 명령어
기본적으로 오라클 시작시 리스너를 시작함
(모든 과정은 oracle설치 계정으로 진행되어야 함)
lsnrctl start --리스너 시작
sqlplus "/as sysdba" --sqlplus접속 sysdba로
startup
#Oracle stop
오라클 종료 명령어
sqlplus상에서
shutdown [normal, transactional, immediate, abort];
normal : 더이상의 새로운 접속을 허용하지 않으며 종료를 수행하기전에
모든 사용자들이 접속(session)을 끊는것을 기다립니다.
인스턴스를 종료하기전에 데이터베이스를 닫고 dismount합니다.
다음 시작시에는 인스턴스 복구가 필요치 않습니다.
transactional : 트랜스 액션 종료는 클라이언트가 작업을 잃어버리지 않도록
합니다. 특정 인스턴스에서 클라이언트는 새로운 transaction을 시작할 수 없습
니다. 클라이언트는 진행중인 transaction을 종료할때 접속이 끊어집니다.
모든 transaction이 끝났을때 즉시 종료되며 다음 시작때 인스턴스 복구가
필요하지 않습니다.
immediate : 현재 dbms가 수행하고 있는 sql문은 완료하지 않습니다.
오라클 서버는 현재 접속중인 사용자가 접속을 끊을때까지 기다리지 않으며 현재
진행중인 transaction을 rollback하고 모든 사용자의 접속을 끊습니다.
다음 시작때 인스턴스 복구가 필요하지 않습니다.
abort : 정상 종료나 즉시 종료가 제대로 동작하지 않는역우 현재의 데이터
베이스 인스턴스를 중지시킵니다.
오라클 서버가 수행하고 있는 sql문은 즉시 종료되며 현재 접속중인 사용자들이
접속을 끊을때까지 기다리지 않습니다. 커밋되지 않은 transaction은 rollback되
지 않습니다. 파일을 닫지 않은채 인스턴스를 종료합니다.
다음 시작시 인스턴스 복구를 필요로 합니다.
[출처] [Oracle] 오라클 서버 시작 명령어|작성자 juner84
'개발 > Database' 카테고리의 다른 글
ER-Win에서 DB Table 가져오기 (0) | 2009.05.13 |
---|---|
MSSQL2000, 2005 테이블 명세서 추출 쿼리문 (0) | 2009.05.13 |
Toad 단축키 (0) | 2009.04.18 |
[oracle] decode 함수 (1) | 2009.01.16 |
[ORACLE] 테이블 관련 정보 쿼리 (0) | 2008.07.26 |