27,579
社区成员
发帖
与我相关
我的任务
分享
DECLARE @OAID varchar(5)--声明流程ID变量
--1.获得OAID
DECLARE @tbid varchar(5)--声明数据流表名中的ID
SET @tbid=20
DECLARE @condition nvarchar(100)--声明流程查询条件
SET @condition='%abc%'
DECLARE @sql nvarchar(1000)--声明sql查询语句
SET @sql='SELECT @OAID=OAID FROM OA_FLOW_'+@tbid+'_Main WHERE FileTile LIKE '''+@condition+''''
print '执行的SQL语句:'+@sql
EXEC(@sql)--执行查询
print '获得的OAID:'+@OAID
执行的SQL语句:SELECT @OAID=OAID FROM OA_FLOW_20_Main WHERE FileTile LIKE '%abc%'
服务器: 消息 137,级别 15,状态 1,行 1
必须声明变量 '@OAID'。
DECLARE @OAID varchar(5)--声明流程ID变量
--1.获得OAID
DECLARE @tbid varchar(5)--声明数据流表名中的ID
SET @tbid=20
DECLARE @condition nvarchar(100)--声明流程查询条件
SET @condition='%标准文本合同审批单(王珏, 2009-11-18 14:11)%'
DECLARE @sql nvarchar(1000)--声明sql查询语句
SET @sql='SELECT @OAID=OAID FROM OA_FLOW_'+@tbid+'_Main WHERE FileTile LIKE @condition'
--执行查询
EXEC sp_executesql
@stmt=@sql,
@params=N'@OAID varchar(5) OUTPUT,@condition nvarchar(100)',
@OAID=@OAID OUTPUT,@condition=@condition;
print '获得的OAID:'+@OAID
DECLARE @OAID varchar(5)--声明流程ID变量
--1.获得OAID
DECLARE @tbid varchar(5)--声明数据流表名中的ID
SET @tbid=20
DECLARE @condition nvarchar(100)--声明流程查询条件
SET @condition='%abc%'
DECLARE @sql nvarchar(1000)--声明sql查询语句
SET @sql='SELECT @OAID=OAID FROM OA_FLOW_'+@tbid+'_Main WHERE FileTile LIKE @condition'
--执行查询
EXEC sp_executesql
@sql,
N'@OAID varchar(5) OUTPUT,@condition nvarchar(100)',
@OAID OUTPUT,@condition;
print '获得的OAID:'+@OAID
获得的OAID:1518
2.sq_executesql
a.提供了很强大的借口--避免了串联变量的问题还可以输出LOOK
DECLARE @i AS INT;
SET @i = 10248;
DECLARE @sql AS NVARCHAR(46);
SET @sql = 'SELECT * FROM dbo.Orders WHERE OrderID = @oid;';
-----请注意,上面的@oid就不要在转化成字符串联进去了直接上直接上直接上
EXEC sp_executesql
@stmt = @sql,--这个相当存储过程一个查询主体,就是AS后面的东西
@params = N'@oid AS INT',--这个相当于存储过程的传入参数声明,就是AS前面的东西
@oid = @i;--这里相当于你调用存储过程的时候后面那个参数列表
------这里如果你给@id赋值三个不同的值10348 10349 10897 它为此产生的执行计划只有一个哦~只有一个不是三个!!!节约成本
b.它可以通过传入的参数检查,用来防止SQL注入.
我的理解就是通过传入的参数的长度类型之类的进行判断吧.
SET @sql='SELECT '+@OAID+'=OAID FROM OA_FLOW_'+@tbid+'_Main WHERE FileTile LIKE '''+@condition+''''
DECLARE @OAID varchar(5)--声明流程ID变量
--1.获得OAID
DECLARE @tbid varchar(5)--声明数据流表名中的ID
SET @tbid=20
DECLARE @condition nvarchar(100)--声明流程查询条件
SET @condition='%abc%'
DECLARE @sql nvarchar(1000)--声明sql查询语句
SET @sql='SELECT '+@OAID+'=OAID FROM OA_FLOW_'+@tbid+'_Main WHERE FileTile LIKE '''+@condition+''''
print '执行的SQL语句:'+@sql
EXEC(@sql)--执行查询
print '获得的OAID:'+@OAID
SET @sql='SELECT '+@OAID+'=OAID FROM OA_FLOW_'+@tbid+'_Main WHERE FileTile LIKE '''+@condition+''''
print '执行的SQL语句:'+@sql
EXEC(@sql)--执行查询
print '获得的OAID:'+@OAID
sp_executesql