Bài tập 2: Thực thi dữ liệu và Stored Procedure trong SQL Server

Thực hiện bài thực hành theo các yêu cầu sau:

  1. Dùng câu lệnh bcp để export tất cả dữ liệu từ bảng DatHang của CSDL QLBanHang (trong bài thực hành 1) tới c:\DatHang.txt (hoặc  c:\DatHang.csv)
  2. Thay đổi một vài dữ liệu trong file c:\DatHang.txt và lưu lại. Rồi import tới bảng DatHang từ file text này sử dụng câu lệnh bcp
  3. Import DatHang.txt tới bảng DatHang sử dụng BULK INSERT
  4. Tạo một  Linked Server với tên ‘LinkedQLKhachHang’ mà sẽ liên kết tới cơ sở dữ liệu Access có tên ‘QLKhachHang.mdb’ (trước tiên bạn cần tạo một CSDL có tên là QLKhachHang bằng phần mềm Access tương tự như bài tập 1 và nhập dữ liệu vào). Rồi thực hiện việc select dữ liệu sử dụng và thực hiện  OPENQUERY
  5. Sử dụng mô hình kết nối máy tính ad-hoc với các chức năng OPENROWSETOPENDATASOURCE để select dữ liệu từ ‘QLKhachHang.mdb’
  6. Tạo Cursor sau

DECLARE @au_lname varchar(40), @au_fname varchar(20)
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName FROM Northwind.dbo.Employees
OPEN Employee_Cursor
FETCH NEXT FROM Employee_Cursor INTO @au_lname, @au_fname
WHILE @@FETCH_STATUS = 0
BEGIN
  PRINT 'Author:' + @au_fname + ' ' + @au_lname
  FETCH NEXT FROM Employee_Cursor INTO @au_lname, @au_fname
END
CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor

  1. Tạo Stored Procedure sau và thử thực thi với một vài giá trị

CREATE PROCEDURE AddNewDatHang
@IdDatHang smallint,
@TenSP varchar(50),
@TenKH varchar(50),
@KetQua smallint=1 Output
AS
DECLARE @IdKhachHang smallint
  BEGIN TRANSACTION
  If not Exists(SELECT IdKhachHang FROM KhachHang WHERE [Ten]=@TenKH) 
    BEGIN 
      SET @IdKhachHang= (SELECT Max(IdKhachHang) FROM KhachHang) 
      SET @IdKhachHang=@IdKhachHang+1 
      INSERT INTO KhachHang VALUES(@IdKhachHang,@TenKH) 
      If Exists(SELECT IdDatHang FROM [DatHang] WHERE IdDatHang=@IdDatHang)
        BEGIN 
           SELECT @KetQua=1 
           ROLLBACK TRANSACTION 
        END 
      Else 
        BEGIN 
           INSERT INTO [DatHang](IdDatHang,TenSP,IdKhachHang) VALUES(@IdDatHang,@TenSP,@IdKhachHang) 
           SELECT @KetQua=0 COMMIT TRANSACTION 
        END 
    END 
  Else 
    BEGIN 
      If Exists(SELECT IdDatHang FROM [DatHang] WHERE IdDatHang=@IdDatHang) 
        BEGIN 
         SELECT @KetQua=1 ROLLBACK TRANSACTION 
        END 
     Else 
        BEGIN 
          INSERT INTO [DatHang](IdDatHang,TenSP,IdKhachHang) VALUES(@IdDatHang,@TenSP,@IdKhachHang) 
          SELECT @KetQua=0 COMMIT TRANSACTION 
        END 
  END 
Print @KetQua Return
  1. Sử dung ngôn ngữ lập trình C# hoặc VB.NET để thực thi Stored Procedure ‘AddNewOrder’, Tham khảo thêm bài viết lập trình CSDL với C# và bài giảng lập trình CSDL với ADO.NET

Có thể bạn sẽ thích…

Trả lời

Thư điện tử của bạn sẽ không được hiện thị công khai. Các trường bắt buộc được đánh dấu *