Đây là một đoạn mã VBA mà tôi đã sử dụng để gọi một thủ tục được lưu trữ trong DB2. Kỹ thuật tương tự sẽ hoạt động cho bất kỳ câu lệnh DDL nào. Để thực hiện việc này, hãy tạo một truy vấn chuyển và đặt CREATE TABLE #tblname...
của bạn câu lệnh dưới dạng văn bản SQL của nó.
QUAN TRỌNG:Sau đó, mở trang thuộc tính của truy vấn và đặt thuộc tính 'Trả về Bản ghi' thành "Không".
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("qry_SP_CHANGE_COLUMN")
qdf.Connect = CurrentDb.TableDefs("SCHEMA_tblName").Connect
qdf.SQL = "call SCHEMA.SP_CHANGE_COLUMN(...)"
qdf.Execute dbFailOnError
qdf.Close
Set qdf = Nothing
Lưu ý, bạn có thể sẽ không phải thay đổi văn bản SQL của mình. Bạn chỉ có thể để điều đó trong truy vấn def nếu cấu trúc bảng không bao giờ thay đổi.
Thách thức đối với bạn là bạn phải sử dụng cùng một kết nối cho bất kỳ hoạt động nào đối với bảng tạm thời. Vào phút kết nối bị đóng, bảng tạm thời của bạn sẽ biến mất vì đó là bảng tạm thời cục bộ và nó chỉ hiển thị với một kết nối đó. Bạn có thể tránh điều này bằng cách sử dụng '##', bảng tạm thời chung, nếu bạn có quyền làm điều đó.