当前位置:首页 » 编程语言 » sql动态更改
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql动态更改

发布时间: 2022-11-16 03:35:15

1. sql存储过程 如何动态修改sql语句!

利用动态sql:
将整个sql语句编辑成一个字符串,最终通过execute语句来执行动态sql

Select @Count = count(ID)
FROM NetDIY_Procts_CN
那么这个呢?需要把结果返回到@Count中,要怎么在这个sql加上@SqlWhere 条件语句

exec('select ' + @Count + '= count(ID) from NetDIY_Procts_CN ' + @SqlWhere)

SELECT * FROM NetDIY_Procts_CN Where weighting <= @Name order By weighting desc
exec('select * FROM NetDIY_Procts_CN Where weighting <= '+@Name+' ' + @SqlWhere+' order By weighting desc')
两种都出错

2. 如何动态替换sql中的表名

declare@tableNameasnvarchar(50)
declare@strSQLasnvarchar(4000)
set@tableName='表名称'
set@strSQL='select*from'+@tableName
exec(@strSQL)

3. 如何动态改变TQUERY中的SQL的查询语句

可以的。在这里你不妨把SQL语句看成一个普通的字符串,这样所要做的就是字符串的连接而已。如:设TSTATUS伟字符串型
Query1.SQL.Add('SELECT
*
FROM
HUZ
WHERE
STATUS=''有效''AND
TSTATUS
'+''''+Edit1.Text
+'''';不过我觉得还是用参数比较好。象这样:Query1.SQL.Add('SELECT
*
FROM
HUZ
WHERE
STATUS=''有效''AND
TSTATUS=:TSTATUS');Qusry1.ParamByName('TSTATUS'):=Edit1.Text;ps:我不是高手

4. 动态SQL的使用

在介绍动态SQL前我们先看看什么是静态SQL

静态SQL

静态 SQL 语句一般用于嵌入式 SQL 应用中,在程序运行前,SQL 语句必须是确定的,例如 SQL 语句中涉及的列名和表名必须是存在的。静态 SQL 语句的编译是在应用程序运行前进行的,编译的结果会存储在数据库内部。而后程序运行时,数据库将直接执行编译好的 SQL 语句,降低运行时的开销。

动态SQL

动态 SQL 语句是在应用程序运行时被编译和执行的,例如,使用 DB2 的交互式工具 CLP 访问数据库时,用户输入的 SQL 语句是不确定的,因此 SQL 语句只能被动态地编译。动态 SQL 的应用较多,常见的 CLI 和 JDBC 应用程序都使用动态 SQL。

动态SQL作用

动态SQL执行方法

使用EXEC(EXECUTE的缩写)命令和使用SP_EXECUTERSQL。

EXEC命令执行

语法

注:EXECUTE 命令有两个用途,一个是用来执行存储过程,另一个是执行动态SQL

不带参数示例

在变量@SQL中保存了一个字符串,该字符串中包含一条查询语句,再用EXEC调用保存在变量中的批处理代码,我们可以这样写SQL:

EXEC ('SELECT * FROM Customers')

结果如下:

与我们直接执行SELECT * FROM Customers一样。

带参数示例

还是上面的示例,我们换一种写法

DECLARE @SQL AS VARCHAR(100);

DECLARE @Column AS VARCHAR(20);

SET @Column = '姓名'

SET @SQL = 'SELECT ' + @Column + ' FROM Customers'

EXEC (@SQL)

结果如下:

SP_EXECUTERSQL执行

语法

注意:SP_EXECUTERSQL是继EXEC后另一种执行动态SQL的方法。使用这个存储过程更加安全和灵活,因为它支持输入和输出参数。注意的是,与EXEC不同的是,SP_EXECUTERSQL只支持使用Unicode字符串作为其输入的批处理代码。

示例

构造了一个对Customers表进行查询的批处理代码,在其查询过滤条件中使用一个输入参数@CusID

DECLARE @SQL AS NVARCHAR(100);

SET @SQL=N'SELECT * FROM Customers

WHERE 客户ID=@CusID;'

EXEC SP_EXECUTESQL

@STMT=@SQL,

@PARMS=N'@CusID AS INT',

@CusID=1;

结果如下:

代码中将输入参数取值指定为1,但即使采用不同的值在运行这段代码,代码字符串仍然保存相同。这样就可以增加重用以前缓存过的执行计划的机会

5. Sql存储过程 如何动态修改sql语句!

利用动态sql:
将整个sql语句编辑成一个字符串,最终通过execute语句来执行动态sql

6. sql如何动态更新表字段

这样 在sql server中可以
declare @str nvarchar(500);
set @str='字段1'+'=原表.'+'字段1';
set @str='update 目标表 set '+@str+' from 原表 where 目标表.id=原表.id';
exec sp_executesql @str
字段1 代表一个分割参数,多了可以循环构造拼接

7. 作业计划里面的执行周期可以用sql语句动态修改吗

可以的,用系统存储过程sp_update_schele,具体修改方法和参数意义,去微软官方帮助查看
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-proceres/sp-update-schele-transact-sql

8. sql查询时如何动态更换连接表

动态拼写SQL语句

ifA=1
begin
sqlstr=sqlstr+'leftjointable1on......'
end
elseifA=2
begin
sqlstr=sqlstr+'leftjointable2on......'
end
...
executesqlstr

9. PowerBuilder 中怎么样动态改变datawindow的sql语句

这个要看你的具体要求

  1. 如果是同一个表,只是想动态更改where 的条件,可以 用setsqlselect ,像这样

    ls_sql="select * from a where a='a'"

    dw_1.setsqlselect(ls_sql)

    记得,要重新retrieve 数据

    当然这种情况 也可以通过 retrieval arguments 的设置来达到效果,实际运用,这种方方法会用的更多

  2. 如果是随便的一句sql,要显示在数据库窗口内

    这个网上的资料非常多叫 “pb 动态数据库窗口”,大概的方法就是通过动态的更改,数据库窗口的Syntax,也就是数据库窗口的原码(包括了你要的sql语句,然后还有数据库窗口各控件的布局)

    你可以随便建一个数据库窗口 :dw_1

    messagebox("",string(dw_1.Object.DataWindow.Syntax))

    用以上代码可以看到Syntax结构,更改后,用create函数重建数据库窗口

    integer dwcontrol.Create ( string syntax {, string errorbuffer } )

10. sql中修改动态表的列名

sp_rename的@objname参数可以是一个字符串,也可以是一个字符串变量.但不可以是两者的混合型.所以,如果要动态修改表,那么可参照如下形式:
declare @objname varchar(50);
set @objname='动态表名'; /*补充解释:这里的'动态表名'就是你原来的@table变量,该变量的值必须是一个明确的表名,如:'06级三本'*/
set @objname=@objname+'.F5';
exec sp_rename @objname,'理论','column';

忘了说一点:'06级三本'这样的表名是不合法的,引用时请加上中括号[],如[06级三本]
修改后的代码如下:
declare @objname varchar(50);
set @objname='['+动态表名+'].F5';
exec sp_rename @objname,'理论','column';