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 -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName' exec(@s) -- 成功 exec sp_executesql @s -- 此句正确
转载于:https://www.cnblogs.com/lj821022/p/4546107.html
动态语句基本语法:1 :普通SQL语句可以用exec执行Select * from tableName exec('select * from tableName')exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N2:字段名,表名,数据库名之类作为变量时,必须用动态SQL declare @fname v...
在编写
sql
语句或存储过程中,难免会有碰到语句中
表
名或某一
字段名
不确定,要根据条件来,考试,大提示我们可考虑用
SQL
提供的sp_execute
sql
函数,,他可
执行
动态
的修改,删除,查询功能,至于此函数的详细解释可到
sql
帮助文档中去查看,下面我将举一个
动态
查询的列子,包括
表
名及想查询的字段均不确定:
(ID int) (A numeric(9,2)) (B numeri
use E_Graphics_Card
if exists(select * from sys.objects where name='usp_Insert_Update_Bios_Info_Args')
drop proc usp_Insert_Update_Bios_Info_Args
CREATE PROC usp_Insert_Update_Bios_Info_Args
declare @str
sql
varchar(50),
@table_name varchar(50)
set @table_name='test' --test是
表
名
set @str
sql
='select count(*) from '+@table_name
DECLARE cur CURSOR FOR SELECT id FROM v_proc;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET @select = concat('create VIEW v_proc as SELECT ...
-- select * from information_schema.tables
-- 查询
表
的名称
select table_name from information_schema.tables
Select * FROM SysColumns Where id=Object_Id('DIM_PROLINE')
--查询
表
的
字段名
Select name FROM SysColum...
sys.columns c
LEFT JOIN sys.extended_properties ep ON ep.major_id = c.object_id AND ep.minor_id = c.column_id AND ep.name = 'MS_Description'
INNER JOIN sys.tables t ON c.object_id = t.object_id
WHERE
t.is_ms_shipped = 0
ORDER BY
t.name, c.column_id;
该语句会查询所有非系统
表
的字段信息,并按照
表
名和字段 ID 排序。如果要查询特定架构下的自建
表
,可以在 `sys.tables`
表
和 `SCHEMA_NAME` 函数中添加条件。