動態sql變數賦值
① 如何用動態sql給變數賦值的相關推薦
在一個問題中遇到的一段精典動態SQL代碼:declare @fdate datetime
declare @sql0 nvarchar(4000)
declare @ban varchar(4),@num varchar(4),@cur_id intset @cur_id=2497
set @sql0=' SELECT @ban=b'
case when substring(convert(char(10),@fdate,120),9,1)=0 then substring(convert(char(10),@fdate,120),10,1)
else substring(convert(char(10),@fdate,120),9,2)
end ' FROM kq_paiban'
' where empid=''' rtrim(convert(char,@cur_id)) ''' and
sessionid=(select id from s_session where convert(varchar(7),date0,120)=''' substring(convert(char(10),@fdate,120),1,7) ''')'
select (@sql0)--顯示動態構造的SQL語句
--在構造動態SQL語句字元串時,對其中動態部分(比如這里的列名B1,B2[Bi]後面變化的部分i)要先運算出來,還有其中的常量部分,最後將字元串連接成完整語句.exec sp_executesql @sql0,N'@ban varchar(4) output',@num output
--這里沒有使用EXEC()函數,因為該存儲過程支持嵌入參數.
② mysql 如何給變數賦一個動態sql執行的結果
DECLAREdt_idvarchar(32);
SET@sqls=CONCAT('SELECTid
FROM
w_volume_detail
WHERE
v_id="',dd_id,'"ANDuidISNULLLIMIT0,1');
executeimmediate@sqlsintodt_id;
③ Sql語句中的select語句。在ms sql server中。對變數賦值
問題一:
可以定義局部變數,也可以用存儲過程。
局部變數:
聲明:DECLARE@變數名 類型
賦值:SET@變數名=值 或 SELECT@變數名=值
select @name =name from table 1 where id =『123』,如果結果有多個,一般要對這些結果進行處理,用if else或者case when。應該不會報錯
問題二:
不會影響。
存儲過程:
Create procere 名
@參數1 數據類型=默認值[output] 默認[input]
···
@參數1 數據類型=默認值[output]
As
Begin
Sql語句
End
select @name =name from table 1 where id =『123』可以為變數賦值,正常。
④ 如何用動態SQL語句給變數賦值
在一個問題中遇到的一段精典動態SQL代碼:declare @fdate datetime declare @sql0 nvarchar(4000) declare @ban varchar(4),@num varchar(4),@cur_id intset @cur_id=2497 set @sql0=' SELECT @ban=b'+ case when substring(convert(char(10),@fdate,120),9,1)=0 then substring(convert(char(10),@fdate,120),10,1) else substring(convert(char(10),@fdate,120),9,2) end+' FROM kq_paiban'+ ' where empid='''+rtrim(convert(char,@cur_id))+''' and sessionid=(select id from s_session where convert(varchar(7),date0,120)='''+substring(convert(char(10),@fdate,120),1,7)+''')' select (@sql0)--顯示動態構造的SQL語句 --在構造動態SQL語句字元串時,對其中動態部分(比如這里的列名B1,B2[Bi]後面變化的部分i)要先運算出來,還有其中的常量部分,最後將字元串連接成完整語句.exec sp_executesql @sql0,N'@ban varchar(4) output',@num output --這里沒有使用EXEC()函數,因為該存儲過程支持嵌入參數.
⑤ 在mssql中執行動態T-SQL語句並賦值給變數
declare@Countint,@sqlStrnvarchar(1000)
set@sqlStr='select@a=count(*)fromAwherepk=123'
execsp_executesql@sqlStr,N'@aintoutput',@Countoutput
select@Count
⑥ oracle 中動態sql語句,表名為變數,怎麼解
表名可用變數,但一般需要用到動態sql,舉例如下:
declare
v_date varchar2(8);--定義日期變數
v_sql varchar2(2000);--定義動態sql
v_tablename varchar2(20);--定義動態表名
begin
select to_char(sysdate,'yyyymmdd') into v_date from al;--取日期變數
v_tablename := 'T_'||v_date;--為動態表命名
v_sql := 'create table '||v_tablename||'
(id int,
name varchar2(20))';--為動態sql賦值
dbms_output.put_line(v_sql);--列印sql語句
execute immediate v_sql;--執行動態sql
end;
執行以後,就會生成以日期命名的表。
⑦ 如何學習SQL中語句的賦值,從哪方面學起
set @sql='select fsname as'+'商品名' 等價於 set @sql='select fsname as 商品名' ,也就是你理解的那個意思,中間的那個「+」是SQL Server中起連接作用的符號。
這就是所謂的動態SQL語句,SQL Server中給變數賦值的兩個關鍵字就是 set 和 select ,具體語法和用法google下,到處都是。
⑧ oracle函數 動態sql 給count變數賦值
雖然你沒問問題,但是我想你大概的意思是動態語句的值怎麼獲取吧。
動態語句里不能寫into,得放到外面來。這么寫:
executeimmediatep_sqlintop_max;