PDA

View Full Version : Pl/sql



lttnd
01-11-2002, 21:14
Khi tìm hiểu Oracle8i tôi có một số điều còn vướng mắc sau :
--sự khác nhau giữa các giá trị null,false và 0
--cách dùng hàm rtrim('string','string') và ltrim('string','string')
--sự khác nhau giữa hàm đơn hàng và hàm đa hàng
--con trỏ ẩn xử lý đơn hàng hay đa hàng ,hay cố gắng xử lý đơn hàng
--in (1,2,..,10) có bằng or 1 or 2 or.. or 10 hay không trong mệnh đề where
--hàm sau sai ở đâu,hãy sửa giúp giúp
create or replace
procedure test1(t1 IN Boolean,t2 IN boolean, t3 IN OUT Boolean)
IS
Begin
t3=(t1 and t2);
msdb_output.put_line(to_char(t3));--????
End;
/
--tôi có 2 bảng dữ liệu là s_dept(id,name,s_dept_region) và s_region(id,name,condition,..).Bảng s_dept có truờng s_dept_region là khoá ngoài của bảng s_region(id).Làm như thế này thì tôi có thể tạo đuợc thành công 2 bảng nếu s_region coi thuộc tính id là khóa chính(primary key).Tuy nhiên,nếu tôi coi khoá chính của s_region gồm 2 truờng là (id,condition) thì quá trình tạo bảng lại không thành công.Nếu hiểu theo cách Một số trường của bảng A được coi là khoá ngoài của bảng B nếu các trường này tương tứng với một số trường của bảng B là bộ phận của tập các trường mà tạo nên khoá chính của bảng B.Có nghĩa là,truờng s_dept_region của bảng s_dept là khoá ngoài của bảng s_region thì s_dept_region tuong ứng với truờng id của s_region là tập con của (id,condition).Không biết tôi sẽ hiểu vấn đề này như thế nào.
--máy của tôi là lab08 có map tới một máy khác của mạng intranet mà cài Oracle8i.Tôi duợc quyền tạo bảng cơ sở dữ liệu với user/password là lttnd/abc.

Tuy nhiên tôi không biết khi tạo được bảng và commit để cập nhật dữ liệu thì dữ liệu trong bảng nằm ở đâu trong máy tính:cụ thể là trong thư mục nào ,thuộc cơ sở dữ liệu tên là gì,ở dạng file đuôi gì ,trong khi đó tôi chưa tạo cơ sở dữ liệu .??mà lại tạo đuợc bảng,hay có ai đó đã tạo cơ sở dữ liệu trước rồi??

ctr_alt_del
18-11-2002, 13:44
tat cả dữ liệu của bạn nằm trong datafile, còn nếu muốn biết nó nằm ở đâu thì query trong v$datafile ra thì biết. Nếu muốn biết chi tiết no' thuộc tablespace na`o thì query trong all_tables và dba_tablespace ra thì biết nó nằm ở đâu.
Các chi tiết liên quan đến lập trình có thể xem trong quyển PL/SQL reference gì đó.
Nếu một bảng có khoá phụ thì nó phải reference tới tất cả các cột là khoá chính của bảng kia. Thường thì nếu bảng cha có nhiều cột là khoá chính thì các cột đó được thay bằng một cột mã cho cả bảng và các cột đó tồn tại một ràng buộc unique
OK?