안녕하세요.
수고 많습니다.
DelPhi 4.0, Ms-Sql 7.0
제가 View을 만들었습니다.
View가 잘 됩니다.
그런데 문제는 View가 존재 하는지를 어떻게 알수 있는지를 알고 싶습니다.
그래서 어떤책을 보니 SQL Serve Query Analyzer에 작성을 해서 테스트를
하라고 해서 해보아 습니다. 되게 잘됩니다.
1:
************************************************************
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME ='ORDERNO')
DROP VIEW ORDERNO
GO
Create View dbo.OrderNo (invoice, aCode1,aSize1,aColor1,aQty1,
proforma, bCode1,bSize1,bColor1,bQty1)
as
select
a.Bill_No,a.matr_Code,a.Matr_Size,a.Matr_Color,a.Matr_qty, b.Bill_No, b.matr_Code,b.Matr_Size,b.Matr_Color,b.matr_qty
From dbo.Invoice a, dbo.Corder b
where a.Matr_Code =b.Matr_Code
WITH CHECK OPTION
제가 원하는 내용은 이것이 입니다.
존재하며 지우고 존재하지 않으며 새로 만들고.....
************************************************************
2:
____________________________________________________________
select * From Information_Schema.tables
Where Table_Name =''OrderNo'
___________________________________________________________
3:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
select * From sysObjects
Where Type =''V'' and ID = OBJECT_ID("Dbo.view Name")
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
그런데 문제는 이것을 DelPhi에서는 어떻게 작성을 해야 합니까?
그래서 1번을 아래와 같이 작성을 하였습니다.
검토를 해보시고 좋은 방법이 있는지 알려 주시길 바랍니다.
그리고 SQL Serve Query Analyzer에서 작성한것을 저장 했습니다
이것을 어떻게 이용할 수 없을까요?
트리거, 프로시저처럼 아래와 같이 작성하지 않고 바로 사용하는 방법은 없을 까요? 1번 처럼.....
with Query4 do
begin
Close;
Sql.Clear;
Sql.Add('select * From Information_Schema.Views ');
Sql.Add(' Where Table_Name =:p1 ');
paramByName('p1').asstring:='OrderNo';
open;
str1:=FieldByName('Table_Name').asstring;//str1에 값이 있습니다.
//if FileExists(FieldByName('Table_Name').asstring) then//이부분에서는 값이 존재를 하지 않는것 같습니다. 제가 잘못 표현 했는지....
if (str1 = 'OrderNo') then//그래서 이렇게 표현을 했습니다.
begin
with Query5 do
begin
Close;
Sql.Clear;
Sql.Add('drop view Orderno ');
ExecSql;
Close;
end;
end;
Close;
end;
with Query5 do//view생성
begin
Close;
Sql.Clear;
Sql.Add('Create View dbo.OrderNo (invoice, aCode1,aSize1,aColor1,aQty1, proforma, bCode1,bSize1,bColor1,bQty1) as ');
Sql.Add('select a.Bill_No,a.matr_Code,a.Matr_Size,a.Matr_Color,a.Matr_qty, b.Bill_No, b.matr_Code,b.Matr_Size,b.Matr_Color,b.matr_qty From dbo.Invoice a, dbo.Corder b ');
Sql.Add('where a.Matr_Code =b.Matr_Code ');
//Sql.Add('Order By a.Matr_Code, a.Matr_Size, a.Matr_Color ');
//Sql.Add('where a.Matr_Code = b.Matr_Code and a.Matr_Code =''.ATW'' ');
ExecSql;
end;
with Query6 do//data search
begin
Close;
Sql.Clear;
Sql.Add('select * from OrderNo ');
Open;i1:=0;
kg6.ZapGrid(1,0,5000 + 2);
with kg6 do
while not eof do
begin
i1:=i1 + 1;
SCells[0, i1]:=FieldByName('invoice' ).asstring;
SCells[1, i1]:=FieldByName('aCode1' ).asstring;
SCells[2, i1]:=FieldByName('aSize1' ).asstring;
SCells[3, i1]:=FieldByName('aColor1' ).asstring;
NCells[4, i1]:=FieldByName('aQty1' ).asFloat;
SCells[5, i1]:=FieldByName('proforma').asstring;
SCells[6, i1]:=FieldByName('bcode1' ).asstring;
SCells[7, i1]:=FieldByName('bSize1' ).asstring;
SCells[8, i1]:=FieldByName('bColor1' ).asstring;
NCells[9, i1]:=FieldByName('bQty1' ).asFloat;
if (i1 > 5000) then
exit;
Next;
end;
Close;
end;
많은 답변을 부탁 드립니다.
감사합니다.
그럼 수고 하세요
만약에 체크해서 있으면 Drop하고 없으며 새로 만들고 하면
부하가 많이 걸리지 않을 까요
원하는 데이타 항상 바뀌는데 수정하고 새로 만들고 이러면 부하가 많이 걸리지 않을까요
궁금해서 질문 합니다.
그럼 수고 하세요