動態sql語句基本語法
1 :普通SQL語句可以用Exec執行
例: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 請注意字串前一定要加N
2:欄位名,表名,資料庫名之類作為變數時,必須用動態SQL
錯誤: declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 錯誤,不會提示錯誤,但結果為固定值FiledName,並非所要。
正確: Exec('select ' + @fname + ' from tableName') -- 請注意加號前後的單引號的邊上加空格
當然將字串改成變數的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --設定欄位名
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句會報錯
--注:@s引數必須為ntext或nchar或nvarchar型別,必須將declare @s varchar(1000) 改為declare @s Nvarchar(1000)
如下:
declare @s Nvarchar(1000) -- 注意此處改為nvarchar(1000)
set @fname = 'FiledName' --設定欄位名
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正確
3. 輸入或輸出引數
(1)輸入引數:
declare @QueryString nvarchar(1000) --動態查詢語句變數(注:必須為ntext或nchar哐nvarchar型別,不能是varchar型別)
declare @paramstring nvarchar(200) --設定動態語句中的引數的字串(注:必須為ntext或nchar哐nvarchar型別,不能是varchar型別)
declare @input_id int--定義需傳入動態語句的引數的值
set @QueryString='select * from tablename where [email protected]' --id為欄位名,@id為要傳入的引數
set @paramstring='@id int' --設定動態語句中引數的定義的字串
set @input_id =1 --設定需傳入動態語句的引數的值為1
exec sp_executesql @querystring,@paramstring,@[email protected]_id
若有多個引數:
declare @QueryString nvarchar(1000) --動態查詢語句變數(注:必須為ntext或nchar哐nvarchar型別,不能是varchar型別)
declare @paramstring nvarchar(200) --設定動態語句中的引數的字串(注:必須為ntext或nchar哐nvarchar型別,不能是varchar型別)
declare @input_id int--定義需傳入動態語句的引數的值,引數1
declare @input_name varchar(20)--定義需傳入動態語句的引數的值,引數2
set @QueryString='select * from tablename where [email protected] and [email protected]' --id與name為欄位名,@id與@name為要傳入的引數
set @paramstring='@id int,@name varchar(20)' --設定動態語句中引數的定義的字串,多個引數用","隔開
set @input_id =1 --設定需傳入動態語句的引數的值為1
set @input_name='張三' --設定需傳入動態語句的引數的值為"張三"
exec sp_executesql @querystring,@paramstring,@[email protected]_id,@[email protected]_name --請注意引數的順序
(2)輸出引數
declare @num int, @sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何將exec執行結果放入變數中?
declare @QueryString nvarchar(1000) --動態查詢語名變數(注:必須為ntext或nchar哐nvarchar型別,不能是varchar型別)
declare @paramstring nvarchar(200) --設定動態語句中的引數的字串(注:必須為ntext或nchar哐nvarchar型別,不能是varchar型別)
declare @output_result int--查詢結果賦給@output_result
set @QueryString='select @totalcount=count(*) from tablename' [email protected] 為輸出結果引數
set @paramstring='@totalcount int output' --設定動態語句中引數的定義的字串,多個引數用","隔開
exec sp_executesql @querystring,@paramstring,@[email protected]_result output
select @output_result
另外,動態語句查詢的結果集要輸出的話,我只想到以下用臨時表的方法,不知各位有沒有更好的方法.
IF object_id('[tempdb].[dbo].#tmp') IS NOT NULL --判斷臨時表#tmp是否存在,存在則刪除
drop table #tmp
select * into #tmp from tablename where 1=2 --建立臨時表#tmp,其結構與tablename相同
declare @QueryString nvarchar(1000) --動態查詢語名變數(注:必須為ntext或nchar哐nvarchar型別,不能是varchar型別)
set @QueryString='select * from tablename '
insert into #tmp(field1,field2,...) exec(@querystirng)
相關推薦
動態sql語句基本語法--Exec與Exec sp_executesql 的區別
動態sql語句基本語法 1 :普通SQL語句可以用Exec執行 eg: Select * from tableName Exec( 'select * from tableName ')
動態sql語句基本語法
1 :普通SQL語句可以用Exec執行 例: Select * from tableName Exec('select * from tableName') Exec sp_execut
SQL語句基本語法
sql首先寫入可顯示中文代碼set character_set_client=gbk; set character_set_results=gbk;或只輸一句 set names gbk;創建數據庫create database 庫名;查詢現有數據局show databases;刪除數據庫drop data
Mybatis動態sql語句(OGNL語法)
type 語法 key ognl select 動態 font tab class 下面是Mybatis動態sql語句(即OGNL語法)的簡單案例 1.創建表 create table test(id int primary key auto_increment,n
SQL的基本語法練習
col to_char 通用 模糊 工資 轉換成 截斷 使用 round select EMPNO,SAL from emp where SAL BETWEEN 1000 and 2000--從enp中獲取sal中1000到2000之間的數據 select ENAME,S
存儲過程中執行動態Sql語句
查詢 需要 一點 定義 data 復制 ast 我們 臨時 在最近的項目中,有用到動態執行sql語句,SQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出接口,而EXE
Mybatis中的update動態SQL語句 <trim></trim> 用法
color 單獨 null 多個 ride 逗號 myba 不用 log Mybatis Mapper中文件中 update時,需要set設置多個字段,有時逗號處理時,會報錯誤,所以會使用到<trim></trim> 使用trim就是為了刪掉最後
MySQL基礎----動態SQL語句
字段名 基礎 art prepare eat file 動態 執行 esql 尊重原創:http://blog.csdn.net/abc19900828/article/details/39501643 動態sql語句基本語法 1 :普通SQL語句可以用Exec執行 e
怎樣SQL存儲過程中執行動態SQL語句
緩存 參數 insert 每次 一點 證明 record scac 清空緩存 MSSQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出接口,而EXEC沒有。還有一個最大的好
MyBatis中動態SQL語句完成多條件查詢
null nbsp mybatis myba 查詢 from ref HR OS http://blog.csdn.net/yanggaosheng/article/details/46685565 MyBatis中動態SQL語句完成多條件查詢 <select i
Mybatis動態SQL語句使用
第一個 from 在外 字符串 each nbsp mea pack ger 在實際開發中,有時候查詢條件可能是不確定的,查詢條件可能有多條也可能沒有,這時候就需要用到動態的sql語句拼接功能。 一、if、where、sql標簽的使用 需求:在一些高級查詢中,查詢條件存
專案問題記錄------Mabatis動態sql語句
現在在做一個模糊查詢功能,使用兩個查詢條件: 條件1:下拉框選擇的產品名 條件2:輸入框輸入的使用者名稱 需求1:下拉框的選項是從資料庫裡匯出來的產品名,此外,新增一個選項“全部產品”,即使用者可以選擇某個產品,也可以選擇所有產品; 需求2:輸入框可以輸入,也可以不輸入,輸入就按輸
MySQL資料庫學習(一)SQL語言基本語法
一、什麼是資料庫 資料庫(Database)是按照資料結構來組織、儲存和管理資料的倉庫。 每個資料庫都有一個或多個不同的API用於建立,訪問,管理,搜尋和複製所儲存的資料。 通常使用關係型資料庫管理系統(RDBMS)來儲存和管理的大資料量。 所謂的關係型資料庫,是建立在關係模
踩坑經歷(六)MySQL之生成動態SQL語句
delimiter $$ drop procedure if exists test_tb; create procedure test_tb() begin #DECLARE t_error INTEGER DEFAULT 0; -- DECLARE u
使用Mybatis動態sql語句時出現:元素內容必須由格式正確的字元資料或標記組成
>號用>表示,<號用<;表示 @Select("<script> select sum(amount) from user_bills where " + " bill_type=#{billType
mybatis基於XML配置的動態SQL語句
mybatis動態SQL語句 mappers配置檔案中的幾個標籤: <if> <where> <foreach> <sql> If標籤 1 . 作用: 當if標籤的test成立時,就把i
18 12 4 SQL 的基本 語法
資料庫的基本語法 -- 資料庫的操作 -- 連結資料庫 mysql -uroot -p mysql -uroot -pmysql -- 退出資料庫 exit/quit/ctrl+d -- s
mybatis-動態SQL語句
一、CONCAT字串拼接 1. sql中字串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} 代替 #{...} SELEC
mybatis動態sql語句
mybatis 的動態sql語句是基於OGNL表示式的。可以方便的在 sql 語句中實現某些邏輯. 總體說來mybatis 動態SQL 語句主要有以下幾類: if 語句 (簡單的條件判斷) choose (when,otherwize) ,相當於java
mybatis 動態sql語句
mybatis 的動態sql語句是基於OGNL表示式的。可以方便的在 sql 語句中實現某些邏輯. 總體說來mybatis 動態SQL 語句主要有以下幾類: if 語句 (簡單的條件判斷) choose (when,otherwize) ,相當於java 語言