原文:解決存儲過程中拼接的SQL字符串超長導致sql語句被截取的問題

今天遇到了一個奇葩的問題:存儲過程中的sql字符串拼接的太長,超出了分頁存儲過程執行sql參數的nvarchar 的長度。 沒辦法,只能修改自己的存儲過程,因為分頁存儲過程是不能動的。 開始想到的方法是將里層的select語句抽出來,用exec strInnerSql 執行,將查詢胡來的數據放到臨時表中,在 s中用臨時表獲取數據,結果以時報告終 錯誤原因:執行 s語句的時候找不到執行exec s ...

2014-10-15 16:09 1 3038 推薦指數:

查看詳情

SQL Server數據庫存儲過程中拼接字符串注意的問題

  在SQL Server數據庫書寫復雜的存儲過程時,一般的做法是拼接字符串,最后使用EXEC sp_executesql '拼接字符串' 查詢出結果。 先看一段代碼: 然后調用該存儲過程:EXEC Sp_GetStudentList 1。結果如下: 運行失敗 ...

Sat Sep 20 01:55:00 CST 2014 0 5519
存儲過程中拼接字符串

1.將查詢數據插入臨時表 最開始我這么寫的 報錯 對象名'#tmp'無效 可以改成這樣子 即先創建一個臨時表,然后把數據插入臨時表。 可以直接使用全局臨時表實現這個功能 2.將查詢結果保存到變量 開始我是這么寫的 會報 ...

Wed Apr 08 02:14:00 CST 2015 0 8624
在mysql存儲過程中拼接sql解決in的字段類型不匹配問題

一個朋友問我一個問題,他寫了一個存儲過程,並在存儲過程調用了另外一個自定義的函數。該函數返回類型如'1,34,56'的字符串,並將該字符串作為存儲過程的select的id條件。 select語句in里的是函數返回的帶引號的字符串,而系統表里id字段是整形,所以需要撥去單引號 ...

Fri Jun 02 05:19:00 CST 2017 0 2692
SQL Server存儲過程中字符串前加N的含義

使用方法: N'字符串' 解釋: 意思為后面的數據類型為NChar或者NVarchar 使用N前綴 在服務器上執行的代碼(例如在存儲過程和觸發器)顯示的Unicode字符串常量必須以大寫字母N為前綴,如果不使用N前綴,字符串將轉換為數據庫的默認代碼頁,這可能導致不識別某些字符 ...

Thu Jan 17 23:33:00 CST 2019 0 790
存儲過程中拼接sql並且參數化

c#調用如下: 上面的存儲過程做了參數化處理,可以避免sql注入,相比直接拼接(SET @strWhere += ' and [userid] = ' +convert(varchar,@userid),然后用EXEC()方法執行),更高效、更安全 ...

Wed Jan 09 00:38:00 CST 2019 0 2347
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM