Questions tagged «dynamic-sql»

动态SQL是一种使用SQL(结构化查询语言)的技术,它与传统SQL的主要区别是动态SQL允许在运行时动态构建SQL语句,从而简化了程序语句的自动生成和执行。

19
为什么有人在SQL子句中使用WHERE 1 = 1 AND <conditions>?
为什么有人WHERE 1=1 AND &lt;conditions&gt;在SQL子句中使用(通过连接字符串获得的SQL,要么是视图定义) 我在某个地方看到过,它将被用来防止SQL注入,但是看起来很奇怪。 如果进行注射WHERE 1 = 1 AND injected OR 1=1,结果将与相同injected OR 1=1。 稍后编辑:视图定义中的用法如何? 谢谢您的回答。 仍然,我不明白为什么有人会使用这种构造来定义视图,或者在存储过程中使用它。 以这个为例: CREATE VIEW vTest AS SELECT FROM Table WHERE 1=1 AND table.Field=Value
256 sql  dynamic-sql 


10
截断Postgres数据库中的所有表
重建之前,我通常需要从PostgreSQL数据库中删除所有数据。我将如何直接在SQL中执行此操作? 目前,我设法提出了一条SQL语句,该语句返回我需要执行的所有命令: SELECT 'TRUNCATE TABLE ' || tablename || ';' FROM pg_tables WHERE tableowner='MYUSER'; 但是,一旦有了它们,我就看不到以编程方式执行它们的方法。


7
一个表的SQL更新字段来自另一个表的字段
我有两个表: A [ID, column1, column2, column3] B [ID, column1, column2, column3, column4] A将始终是的子集B(表示的所有列A也在B)。 我想使用的所有列中的数据更新特定ID于的记录。这在都存在和。BAAIDAB 是否有UPDATE语法或任何其他方式做到这一点而无需指定列名,而只是说“设置A的所有列”? 我使用的是PostgreSQL,因此也可以接受特定的非标准命令(但是,不是首选)。

10
创建PostgreSQL ROLE(用户)(如果不存在)
如何编写SQL脚本在PostgreSQL 9.1中创建ROLE,但是如果已经存在则不引发错误? 当前脚本仅具有: CREATE ROLE my_user LOGIN PASSWORD 'my_password'; 如果用户已经存在,则失败。我想要类似的东西: IF NOT EXISTS (SELECT * FROM pg_user WHERE username = 'my_user') BEGIN CREATE ROLE my_user LOGIN PASSWORD 'my_password'; END; ...但是那行不通- IF普通的SQL似乎不支持该功能。 我有一个批处理文件,该文件创建了PostgreSQL 9.1数据库,角色和其他一些东西。它调用psql.exe,并传入要运行的SQL脚本的名称。到目前为止,所有这些脚本都是纯SQL,如果可能的话,我想避免使用PL / pgSQL。



4
声明查询字符串的变量
我想知道在MS SQL Server 2005中是否有办法做到这一点: DECLARE @theDate varchar(60) SET @theDate = '''2010-01-01'' AND ''2010-08-31 23:59:59''' SELECT AdministratorCode, SUM(Total) as theTotal, SUM(WOD.Quantity) as theQty, AVG(Total) as avgTotal, (SELECT SUM(tblWOD.Amount) FROM tblWOD JOIN tblWO on tblWOD.OrderID = tblWO.ID WHERE tblWO.Approved = '1' AND tblWO.AdministratorCode = tblWO.AdministratorCode AND tblWO.OrderDate BETWEEN @theDate ) ... etc …

8
表名作为PostgreSQL函数参数
我想将表名作为Postgres函数中的参数传递。我尝试了这段代码: CREATE OR REPLACE FUNCTION some_f(param character varying) RETURNS integer AS $$ BEGIN IF EXISTS (select * from quote_ident($1) where quote_ident($1).id=1) THEN return 1; END IF; return 0; END; $$ LANGUAGE plpgsql; select some_f('table_name'); 我得到了: ERROR: syntax error at or near "." LINE 4: ...elect * from quote_ident($1) where quote_ident($1).id=1)... …

16
在SQL Server中,如何为给定表生成CREATE TABLE语句?
我花了很多时间想出解决这个问题的方法,因此本篇文章的精神是,我将其发布在这里,因为我认为这可能对其他人有用。 如果有人有更好的脚本或要添加的内容,请发布。 编辑:是的,我知道如何在Management Studio中进行操作-但我需要能够从另一个应用程序中进行操作。

8
如何在动态sql语句中使用表变量?
在存储过程中,我在过程之上声明了两个表变量。现在,我试图在动态sql语句中使用该表变量,但是在执行该过程时遇到此错误。我正在使用Sql Server 2008。 这就是我的查询的样子, set @col_name = 'Assoc_Item_' + Convert(nvarchar(2), @curr_row1); set @sqlstat = 'update @RelPro set ' + @col_name + ' = (Select relsku From @TSku Where tid = ' + Convert(nvarchar(2), @curr_row1) + ') Where RowID = ' + Convert(nvarchar(2), @curr_row); Exec(@sqlstat); 我得到以下错误, 必须声明表变量“ @RelPro”。必须声明表变量“ @TSku”。 我试图将表放在动态查询的字符串块之外,但无济于事。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.