Hiển thị kết quả từ 1 đến 6 / 6
  1. #1
    Tham gia
    29-09-2010
    Bài viết
    6
    Like
    0
    Thanked 0 Times in 0 Posts

    Làm sao Return một Table khi dùng lệnh EXEC

    Mình muốn làm một hàm trả về một Table như thế này:

    CREATE FUNCTION [dbo].[func_ReturnTable](@MaBang varchar(10))
    RETURNS table
    AS
    return 'select * from' + dbo.func_getdir(@MaBang)
    --dbo.func_getdir(@MaBang) = 'site1.Dictionary.dbo.Bang'

    Đoạn mã trên không chạy được, nên mình thử dùng EXEC thì không thể Return được:

    CREATE FUNCTION [dbo].[func_ReturnTable](@MaBang varchar(10))
    RETURNS table
    AS
    begin
    declare @chuoi varchar(50)
    set @chuoi='select * from '+ dbo.func_getdir(@MaBang)
    exec (@chuoi)
    Return ?
    end

    Bạn nào biết làm sửa giúp mình với, cảm ơn rất nhiều.
    Quote Quote

  2. #2
    Tham gia
    30-06-2010
    Bài viết
    200
    Like
    5
    Thanked 23 Times in 20 Posts
    Đơn giản nhất là bạn truyền vào 1 tham số nữa là tên bảng kết quả ví dụ @ketqua = '##ketqua' , và @chuoi = 'select * Into ' + @ketqua + ' from '+ dbo.func_getdir(@MaBang)

  3. #3
    Tham gia
    29-09-2010
    Bài viết
    6
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn ơi, Bạn có thể nói rõ hơn được không, làm sao return một table được vậy bạn ?
    nó tạo ra cho mình một bảng mới thôi à.

  4. #4
    Tham gia
    25-10-2010
    Bài viết
    138
    Like
    0
    Thanked 0 Times in 0 Posts
    function trả về một table thì có vẻ hơi phức tạp .Bạn nên kết hợp PROCEDURE và view thì dễ hơn

  5. #5
    Tham gia
    29-09-2010
    Bài viết
    6
    Like
    0
    Thanked 0 Times in 0 Posts
    Cảm ơn các bạn mình làm được rồi, khi tạo được bảng mới rồi thì mình chỉ cần return select * from newbang là ok rồi. (sau khi chạy xong thì đelete đi cho nó khỏi tốn bộ nhớ :d)

  6. #6
    Tham gia
    20-07-2009
    Location
    Hà Nội
    Bài viết
    125
    Like
    0
    Thanked 8 Times in 8 Posts
    Làm như vậy thì không ổn

    Trong những câu truy vấn mà nhiều người có thể sử dụng 1 lúc, nếu bạn tạo ra 1 bảng, sau đó xóa đi, thì một người khác gọi câu truy vấn này sẽ không thể CREATE bảng được.

    Trong trường hợp này, tốt nhất là tạo bảng tạm (Temporary Table) hoặc sử dụng biến bảng ( Table Variable ) là tốt nhất.

  7. Thành viên Like bài viết này:


Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •