动态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;