DECLARE @counter INT = 1
WHILE ((SELECT count(*) from ##tmp_tname_pkey_map) >= @counter-1)
BEGIN
DECLARE @table varchar(250);
DECLARE @primarykey varchar(250);
SELECT @table = TABLE_NAME from ##tmp_tname_pkey_map where INDEX_ID = @counter;
SELECT @primarykey = PRIMARY_KEY_COLUMN from ##tmp_tname_pkey_map where INDEX_ID = @counter;
DECLARE @query nvarchar(max);
DECLARE @maxVal BIGINT;
SET @query = 'SELECT @maxVal = max(' + @primarykey + ') from ' + @table;
EXEC sp_executesql @query, N'@maxVal INT out', @maxVal out
上面的代碼是,我使用來獲取所有表和它們的主鍵(除了一個表大多整數)的列表,並獲得它們的最大的存儲過程的一部分值。執行SQL與輸出參數(與IF條件)
這適用於包含變量@primarykey的INT值的表。
我的問題是如果有一種方法可以在執行查詢之前檢查INT類型的查詢之前/之前包含條件的錯誤。
當你填入您的臨時表,列出指標,也可能設置類型,然後有兩個可能的語句之一,您對整數做,一個用於任何其他類型。 – TZHX
@SqlZim - 上面的代碼是存儲過程的一部分,它爲架構中的每個表創建一個包含表名,主鍵,主鍵的最大值的表。當主鍵不是int/bigint類型時,我查詢max(主鍵)時失敗 – prax