使用LINQ的统一SQL获取器
我得到了许多具有相同设计的不同SQL表 - 所有标识和两个具有相同名称的字符串字段.我不想编写一组函数来从这些表中获取值,我想将表作为参数的一个过程.但是,当我开始检索数据时,它说"无法转换类型的bla-bla-bla".它需要直接通过类型,这就是我要避免的.该怎么办? /* defined tables: create table tableA ( id int identity not null, type_code nvarchar(50) not null, type_description nvarchar(1000) not null ) same SQL for tableB and tableC tableA, tableB, tableC */ void getAnyId( Table tbl, string codeFilter) { var p=(tableA)tbl; // HERE I GET EXCEPTION !!!
6 2024-04-26
编程技术问答社区
从字符串转换日期时间时转换失败
我正在尝试将参数从Windows应用程序传递到存储过程. 有两个参数'@dt'&'@dt2'从dateTimePickers获得值. 每当我执行存储过程时,都会出现错误,说"转换从字符串转换DateTime时失败". 执行查询后,我想在datagridview中显示. 我无法弄清楚这个问题. 这是我的过程和代码 存储过程 Alter Proc [dbo].[deepak_proc] (@dt datetime, @dt2 dateTime) AS 将@cols声明为nvarchar(max) 将@query称为nvarchar(max) 选择@cols = STUFF((SELECT ',' + QUOTENAME(date +'_'+Logname) from ( select K_date,
10 2024-04-24
编程技术问答社区
雪花动态 SQL: 在两次执行之间将查询结果存储为变量
在雪花中,我想在第二个动态SQL查询中使用一个动态SQL查询的数字结果: CREATE OR REPLACE PROCEDURE DB.SCHEMA.SP_DATA_COLUMN_VALUES(table_name varchar, column_name varchar, date_column varchar) RETURNS TABLE() LANGUAGE SQL AS $$ -- Finds most common values associated with a column. DECLARE res RESULTSET; sql_query VARCHAR; sql_row_count varchar; total_row_count varchar; BEGIN sql_row_count := 'select count(*) from '|| table_name ||' where '|| date_column
雪花中的动态 SQL
当我在雪花中运行动态SQL时,我会遇到以下错误: 分配给'sql_main',因为值超过变量的大小限制.它的大小为263;限制为256(内部存储大小为字节). 这是代码: SET v_G = '1'; SET v_G1 = $v_G::VARCHAR; SET v_P = (SELECT "txtstr" FROM table2 WHERE "grouping" = $v_G); SET SQL_MAIN = 'CREATE TABLE N_1 AS SELECT a1.YEARMONTH as "DATE", COUNT(a1.RECORD_NUM) AS "COUNT", ' || $v_G1 ||' AS "GROUP" FROM table1 a1 WHERE ' || $v_P || ' GROUP B
74 2024-04-22
编程技术问答社区
为什么要避免动态SQL查询? 有什么建议可以去除其中不好的部分并使用这些?
您能否指导我为什么建议避免动态SQL?有什么办法可以继续使用动态SQL并避免其坏事? 解决方案 P> 如果您不了解这一切,请回来问一个问题,但是在您理解本文之前,您不应使用动态SQL. . 其他解决方案 主要问题是SQL注入.人们可以输入可以改变您的SQL意图的数据. 最好的解决方案之一是使用sp_executesql. http://msdn.microsoft.com/en-en-us/en-us/library/library/library/ms188001.aspx
12 2024-04-21
编程技术问答社区
在存储过程中使用LIKE和%,并在FROM子句中使用参数
我正在创建一个网页来托管数据库. 我希望此网页具有一个搜索框功能,该功能可以在SSMS 2014中的表中更新Visual Studio 2017中的GridView. 我希望此GrideView具有动态性,因为最终用户可以选择一个表格,然后指定"搜索串"以应用于列中的数据. 网页看起来像这样: on代码. 在搜索按钮单击事件上,我希望将三个文本框中的每个值传递到存储过程中. 这是按钮单击事件的当前代码. protected void btnSearch_Click(object sender, EventArgs e) { using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["CID1ConnectionString"].ConnectionString)) { SqlDataAdapter sear
6 2024-04-17
编程技术问答社区
如何在c#中从Datatable动态地建立一个插入命令
我在从C#中的数据表对象动态地制作SQL插入语句时面临一些问题.我想知道最佳实践. String sqlCommandInsert = "INSERT INTO dbo.RAW_DATA("; String sqlCommandValue = ""; foreach (DataColumn dataColumn in dataTable.Columns) { sqlCommandInsert += dataColumn + ","; } sqlCommandInsert += sqlCommandInsert.TrimEnd(','); sqlCommandInsert += ") VALUE("; for (int i = 0; i
4 2024-04-15
编程技术问答社区
根据通过字符串传递的列名创建动态SQL
我需要找出表A中存在的行,表A中缺少的行(使用左联接),其中表A和表B是两个具有相同结构但在不同架构内的表B. 但是必须使用动态SQL构造查询,并且需要用于执行连接的列存储在字符串中.如何从字符串中提取列名并使用它们在查询下动态构造: 数据库是Azure SQL Server eg: DECLARE @ColNames NVARCHAR(150) = 'col1,col2' 查询要根据Colnames中定义的列构建的查询: - SELECT * FROM Table A Left Join Table B ON A.col1 = B.col1 AND A.col2 = B.col2 AND B.col1 IS NULL AND B.col2 IS NULL 如果@ColNames中的列数量更多,则选择语句需要适合所有列. 解决方案 不知道完整上下文,请尝试以下操作: DECLARE @ColNames NVARCHAR(150) = 'col
16 2024-03-26
编程技术问答社区
使用Postgres选择多个数据以及特定时间内的平均值的查询
我在表中有两个不同日期的数据中有数据,以提供相同的数据源.数据样本在下面给出 . 此表包含1&2作为分支和AA,AA,BB和CC作为其子分支的服务器的记录数据2秒.在原始表中,每秒都以类似的方式登录数据.我想在指定的时间之间将每个子组的平均值取用,以便显示我的数据如下所示.你们能帮我写选择查询吗? 解决方案 您可以将AVG_AA转换为bigint或双重精度.首先从名称字段提取ID和名称,然后按ID和日期计算平均值. -- PostgreSQL(v11) WITH cte_t AS ( SELECT LEFT(name, 1) id , RIGHT(name, POSITION('.' IN REVERSE(name)) - 1) t_name , value , time_stamp FROM test ) SELECT id , time_stamp :
12 2024-03-21
编程技术问答社区
如何在Entity Framework 7(核心)中按某些实体属性动态排序
我有一个项目,前端JavaScript指定了要订购的列列表. 然后在后端我有多层应用程序.典型场景 服务层(服务模型的(DTO)属性与客户端想要订购的任何内容匹配) 域层(它揭示了存储库接口以访问持续的对象) ORM层(它实现了存储库,并且使用实体框架7(又称实体框架核心)访问SQL Server数据库) 请注意,DNX Core V5.0或.NET Platform v5.4不支持System.Linq.Dynamic,因此我无法使用该库. 我在我的Things存储库中具有以下实现: public async Task> GetThingsAsync(IEnumerable sortModels) { var query = GetThingsQueryable(sortModels); var things = await query.ToLi
12 2024-03-11
编程技术问答社区
使用plpgsql变量设置n_distinct时出错
我尝试使用函数为表设置n_distinct值.代码如下: create temporary table _temp ( id integer ); create function pg_temp.setdistinct(_cnt real) returns void as $$ begin alter table _temp alter column id set (n_distinct=_cnt); end $$ language plpgsql; select pg_temp.setdistinct(1000); 但收到以下错误: ERROR: invalid value for floating point option "n_distinct": _cnt CONTEXT: SQL statement "alter table _temp alter column id set (n_distinct=_cnt)" PL/
10 2024-01-24
编程技术问答社区
在PL/pgSQL中动态执行查询
我已经找到了我要在Oracle和SQL Server上要求的问题的解决方案(我认为),但似乎无法将其转化为Postgres解决方案.我正在使用Postgres 9.3.6. 这个想法是能够生成有关表内容的"元数据",以进行分析.只能通过为每列运行查询以找出(例如... min/max/count值等)来完成(afaik).为了自动化过程,最好将查询由DB生成,然后执行. . 使用示例salesdata表,我可以为每列生成一个选择查询,返回min()值,使用以下片段: SELECT 'SELECT min('||column_name||') as minval_'||column_name||' from salesdata ' FROM information_schema.columns WHERE table_name = 'salesdata' 优点是数据库将生成代码,而不管列的数量多少. 现在,我想到了一个无数的位置来存储这些查询,要么是某种形式的变量
22 2024-01-19
编程技术问答社区
从表中选择一组动态列,并获取每个列的总和
可以在Postgres中进行以下操作: SELECT column_name FROM information_schema WHERE table_name = 'somereport' AND data_type = 'integer'; SELECT SUM(coulmn_name[0]),SUM(coulmn_name[1]) ,SUM(coulmn_name[3]) FROM somereport; 换句话说,我需要根据某些标准从表中选择一组列,然后总和表中的每个列. 我知道我可以在循环中执行此操作,因此我可以独立计数每一列,但是显然,这需要对从信息架构查询返回的每列查询.例如: FOR r IN select column_name from information_schema where report_view_name = 'somereport' and data_type = 'integer'; LOOP SELECT SUM(r.
24 2024-01-19
编程技术问答社区
F#和ADO.NET-idiomatic F#
类似的东西. Wiki/教程. 这对于从UI的用户输入构建复杂SQL的情况是必需的.目前,我正在工作的项目中正在使用弦操作,看起来很丑陋,很难维护. 解决方案 尝试 dbextensions ,可用为其他解决方案 我能够找到一个很好的库来创建.net中的动态SQL. 在 其他解决方案 不是我知道(尽管那绝对不是那样). 实体框架呢?它允许构建查询并将其转换为SQL,以针对实体: customers.OrderBy(c => c.Name).Skip(10).Take(20) 生成: SELECT value c FROM NW.Customers AS c ORDER BY c.Name skip 10 limit 20;
34 2024-01-19
编程技术问答社区
与SSMS相比,通过Entity Framework调用存储过程时,以不同的索引执行。
我们有一个存储过程,可以通过sp_executesql执行动态SQL. 我们已经通过SQL Server Profiler观察到并查看执行计划时,Profiler表明,当通过SSMS(SQL Server Management Studio)调用此过程时,它使用了索引的良好组合,因此在2秒内返回. 另一方面,当我们通过.NET应用程序调用此过程(通过实体框架调用) - 与SSMS中的调用相比,使用相同的参数 - 然后SQL Server对索引使用更差的选择. 这种行为是确定性的.通过我们的应用程序称为不良索引.通过SSMS调用 - 良好索引. 有人知道为什么会这样吗? 非常感谢. 更新: 存储过程调用看起来像这样: EXEC [schema].[sp] @a=123,@b=NULL 这样执行了过程中的动态SQL: `EXEC sp_executesql @sql, N'@a int, @b smallint',
6 2024-01-07
编程技术问答社区
在.NET中对动态SQL中的表/列名称进行消毒? (防止SQL注入攻击)
我正在生成一些动态的SQL,并希望确保我的代码免受 sql Interyction . 为了参数,这是它如何生成的最小示例: var sql = string.Format("INSERT INTO {0} ({1}) VALUES (@value)", tableName, columnName); 在上面,tableName,columnName,与@value绑定的任何内容都来自不受信任的来源.由于正在使用占位符@value可以防止SQL注入攻击,因此可以忽略. (该命令是通过SQLCommand执行的.) 然而,tableName和columnName 不能以占位符为约束,因此易受伤害 进行注射攻击.由于这是一个"真正的动态"场景,因此没有tableName或columnName的白名单. 问题是: 是否有标准,内置的检查和/或消毒tableName和columnName? (SQLConnection或助手类等)如果不是,则使用第三方库
36 2024-01-02
编程技术问答社区
Yii: 排序和格式化动态列
我正在使用CSQLDATAPROVIDER中的动态SQL查询中显示数据.有一些静态和一些动态列.现在,我想在动态列中进行一些特殊的格式,例如货币.但是,当我不知道执行查询之前的列的号码/名称时,我该怎么做. 我也希望能够对动态列进行排序,而且我又有相同的问题,我没有所有列名. 在使用动态查询和GridView之前的任何人.可以请我指向正确的方向或给出一些想法. 简而言之,我能够在GridView(也是动态行)中成功显示数据并对所有静态列进行排序.只需要对动态行和格式进行动态和静态列 GridView的代码: $tdata=$dataProvider->getData(); //Calculation to get column names $grid_columns = array_keys($tdata[0]); foreach($grid_columns as $i=>$ii) { //Applying Formula to get Total Row
8 2023-12-25
编程技术问答社区
PL/SQL用'IN'子句重写串联查询
目前,我在我的PL/SQL代码上有以下语句: -- vList looks like '1,2,3,4' vStatement := 'SELECT NAME FROM T_USER WHERE ID IN ( ' || vList || ' ) '; Execute Immediate vStatement BULK COLLECT INTO tNames; 我认为如果不良练习,查询的串联,所以我想在不使用刺的情况下进行此查询.重写此问题的方法是什么? P.S.也许这里的人可以指出为什么查询的串联是不好的,因为我没有足够的理由证明这种风格很不好. 解决方案 我的猜测是,您之前采取了一些步骤将VLIST ID纳入划界字符串(您不说VLIST是如何填充的).为什么不作为一个查询? begin ... select name bulk collect into tNames from t_user where id in (select id fro
4 2023-12-03
编程技术问答社区
在SQL语句中建立动态where条件
我想基于存储过程输入的条件来构建自定义,如果不是null,我将在语句中使用它们,否则我将不会使用它们. if @Vendor_Name is not null begin set @where += 'Upper(vendors.VENDOR_NAME) LIKE "%"+ UPPER(@Vendor_Name) +"%"' end else if @Entity is not null begin set @where += 'AND headers.ORG_ID = @Entity' end select * from table_name where @where 但是我得到了这个错误 An expression of non-boolean type specified in a context where a condition is expected, near 'set'. 解决方案 使用此
8 2023-12-03
编程技术问答社区
PL/PGSQL函数中的语法错误,具有动态SQL
我在PostgreSQL 10中使用PL/PGSQL来创建复杂的查询.我正在用几个JOIN s和AND s进行查询.这就是我到目前为止的: DROP FUNCTION IF EXISTS search_person(name text); CREATE FUNCTION search_person(name text) RETURNS TABLE(address_id integer, address_geom text, event_name text) AS $$ --DECLARE BEGIN RETURN QUERY EXECUTE 'SELECT address.id, event.name, address.geom FROM event JOIN person JOIN address JOIN person_address JOIN event_person WHERE person_address.event_
22 2023-12-03
编程技术问答社区