sp_executesql [對sqlserver系統預存程序的一點感悟]

來源:互聯網
上載者:User
sp_executesql
執行可以多次重用或動態產生的 Transact-SQL 陳述式或批處理。Transact-SQL 陳述式或批處理可以包含嵌入參數。
[具體可參考SQL Server線上說明]

這裡想說的是一個具體的應用。當從帶變數的表名裡擷取一個欄位內容時,可以用這個語句實現。在以前我都是用遊標實現的。舉例:declare @tabn varchar(30),@count int 
               declare @nsql nvarchar(1000)    --這裡注意資料類型必須是nvarchar
            set @tabn='authors'            --使用pubs資料庫
            set @nsql='select @count=count(1) from '+@tabn 
            exec sp_executesql @nsql,N'@count int output',@count output
            select @count
這樣就能擷取到@count的值。
用遊標實現:
            declare @tabn varchar(30),@count int
            declare @sql varchar(1000) 
            set @tabn='authors'        --使用pubs資料庫
            set @sql='declare cur_1 cursor for select count(1) from '+@tabn
            exec(@sql)
            open cur_1
            fetch next from cur_1 into @count
            close cur_1
            deallocate cur_1
            select @count

因遊標消耗太多資源,盡量少用遊標。
            

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.