5
Tôi cần trợ giúp chuyển tham số "loại bảng do người dùng xác định" sang sql động, sp_executesql.Truyền tham số bảng do người dùng định nghĩa tới sql động, sp_executesql
Dưới đây là mẫu mã của tôi:
DECLARE @str as nvarchar(Max)
DECLARE @IDLIST AS ListBigintType /* this is my table type, with ItemId column (bigint)*/
INSERT INTO @IDLIST
SELECT DISTINCT bigintid FROM tableWithBigInts WITH(NOLOCK)
set @str ='select * from SomeTable where ID in (select ItemId from @IdTable) '
EXEC sp_executesql @str , @ParamDefs, @IdTable = @IDLIST
Nó nói: Phải khai báo biến bảng "@IdTable"
tôi không thể có được điều này để làm việc, và không thể có được một cách giải quyết với liên hiệp (cho bigints) hoặc vì kết quả sẽ có hơn 8000 ký tự.
Tôi xin lỗi, tôi quên viết rằng khi tôi đang viết những câu hỏi ở đây. Truy vấn đã có nó. nhưng nó cho cùng một lỗi. –
Đã thêm ví dụ làm việc. Kiểm tra mức độ tương thích cho cơ sở dữ liệu của bạn, từ 'select name, compatibility_level từ sys.databases'? Nó sẽ được đặt thành 90 hoặc cao hơn, cho SQL Server 2005+. – Andomar
Ví dụ tôi đã đăng chạy tốt trên cài đặt của tôi, vì vậy tôi chắc chắn rằng bạn có thể chuyển các tham số có giá trị bảng bằng cách sử dụng 'sp_executesql' – Andomar