标签: dynamic-sql

Oracle EXECUTE IMMEDIATE到游标中

我有一个存储过程,它使用该EXECUTE IMMEDIATE命令执行一个非常长的字符串.如何支持非常长的字符串并将数据返回到refcursor中?

sql oracle stored-procedures dynamic-sql sys-refcursor

7
推荐指数
1
解决办法
4万
查看次数

如何使用Replace in SQL server更新多个列?

如何更新表中的不同列和行?我想做类似的事情来替换SQL服务器中的字符串

我想这样做,但值存在于同一类型的多个列中.值是employee表的外键varchars.每列代表一个任务,因此可以将同一个员工分配给记录中的多个任务,这些任务将在不同记录之间变化.我怎样才能有效地做到这一点?在整个表格中,基本上可以替换所有不同的列.

感谢您的帮助或建议.

干杯,〜在圣地亚哥

sql sql-server dynamic-sql sql-update

6
推荐指数
1
解决办法
3万
查看次数

动态创建 UI 和数据库,最好的方法是什么?

我有一个要求,为了使应用程序可扩展和可重用,我必须创建一个规定,用户可以通过该规定通过 XML 文件提供业务对象结构(字段、它们的类型等),并且使用该结构,UI(即控件和完整页面)、数据更新方法(CRUD)和数据库(即表和SP)可以动态自动生成,以满足业务对象的需要。

我“只”听说过实体框架、LINQ 等,但不知道它们是否有助于实现我的愿望。

任何有关如何实现这一设计目标的建议或指导将受到高度赞赏。

万分感谢!

c# linq ado.net entity-framework dynamic-sql

6
推荐指数
1
解决办法
2629
查看次数

T-SQL:我可以使用变量作为数据库引用

我想完成这个:

update @sourceDatabase.dbo.PredictedPrices
Run Code Online (Sandbox Code Playgroud)

然后设置@sourceDatabase为变量.

但我不被允许?

Incorrect syntax near '.'.
Run Code Online (Sandbox Code Playgroud)

还有另外一种方法吗?

sql t-sql sql-server sql-server-2005 dynamic-sql

6
推荐指数
2
解决办法
5160
查看次数

在PostgreSQL中选择具有特定列名称的列

我想编写一个简单的查询来选择PostgreSQL中的多个列.但是,我一直在收到错误 - 我尝试了一些选项,但它们对我不起作用.目前我收到以下错误:

org.postgresql.util.PSQLException:错误:"列"或附近的语法错误

要获取具有值的列,请尝试以下操作:

select * from weather_data where column like '%2010%'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

sql database postgresql select dynamic-sql

6
推荐指数
2
解决办法
2万
查看次数

R 中的动态 SQL 查询 (WHERE)

我正在尝试使用 R 和 postgres 包连接到我的数据库的一些动态 SQL 查询。

不幸的是,如果执行以下语句,我会得到一个空数据框:

    x <- "Mean"
query1 <- dbGetQuery(con, statement = paste(
  "SELECT *",
  "FROM name",
  "WHERE statistic = '",x,"'"))
Run Code Online (Sandbox Code Playgroud)

我相信最后一行有语法错误。我已经以各种可能的方式更改了逗号和引号,但似乎没有任何效果。有谁知道如何使用 R 变量通过动态 WHERE 语句构造此 SQL 查询?

sql postgresql r dynamic-sql

6
推荐指数
1
解决办法
6052
查看次数

在 DO 块内使用由 psql 元命令设置的变量

这是我想做的事情:

\set values foo,bar,baz

DO $$
DECLARE
    value  TEXT;
    values TEXT[] := string_to_array(:'values', ',');
BEGIN
    FOREACH value IN ARRAY values LOOP
        raise notice 'v: %', value;
    END LOOP;
END $$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

这导致以下错误:

ERROR:  syntax error at or near ":"
SELECT string_to_array(:'values', ',') INTO values...
                       ^
Run Code Online (Sandbox Code Playgroud)

这是我目前的解决方案,但感觉很糟糕:

\set values foo,bar,baz

PREPARE get_values AS SELECT string_to_array(:'values', ',');

DO $$
DECLARE
    value  TEXT;
    values TEXT[];
BEGIN
    EXECUTE 'EXECUTE get_values' INTO values;

    FOREACH value IN ARRAY values LOOP
        raise notice 'v: %', value; …
Run Code Online (Sandbox Code Playgroud)

postgresql session-variables dynamic-sql psql postgresql-9.4

6
推荐指数
1
解决办法
2802
查看次数

如何在plpgsql中将变量用作表名

我是plpgsql的新手.我正在尝试使用plpgsql中的变量作为表名在plpgsql中运行一个简单的查询.但是变量被解释为表名而不是被解释为变量名的变量的值.

DECLARE
  v_table text;
  z_table text;
  max_id bigint;

BEGIN

FOR v_table IN
    SELECT table_name  
    FROM information_schema.tables 
    WHERE table_catalog = 'my_database' 
    AND table_schema = 'public'
    AND table_name not like 'z_%'
LOOP
    z_table := 'z_' || v_table;
    SELECT max(id) from z_table INTO max_id;
    DELETE FROM v_table where id > max_id;
END LOOP;
Run Code Online (Sandbox Code Playgroud)

一些背景资料.对于我的数据库中的每个表,我有另一个以"z_"开头的表.例如,对于一个名为"employee"的表,我有一个名为"z_employee"的相同表.z_employee包含与员工相同的数据集.我在每次测试开始时使用它来恢复employee表.

当我运行此函数时,我收到以下错误:

ERROR:  relation "z_table" does not exist
LINE 1: SELECT max(id) from z_table
Run Code Online (Sandbox Code Playgroud)

我的猜测是我不允许z_table在SQL查询中使用该变量.至少不是我在这里使用它的方式.但我不知道它应该如何完成.

postgresql dynamic-sql plpgsql

6
推荐指数
1
解决办法
1万
查看次数

Varchar(Max)在Exec中不起作用

我有一个存储在variable其中的SQL字符串并正在执行它exec()

Declare @sql varchar(max)

set @sql = Concat('select...',@var,'..') -- large string 

exec (@sql)
Run Code Online (Sandbox Code Playgroud)

但我得到错误说

sometext附近的语法不正确

这是因为变量@sql不能保存整个字符串.所以我修改了将字符串拆分为两个不同的变量并执行它

Declare @sql1 varchar(max),@sql2 varchar(max)

set @sql1 = 'select...' 
set @sql2 = ' from sometable join....'

exec (@sql1+@sql2)
Run Code Online (Sandbox Code Playgroud)

我检查了数据长度 @sql1+ @sql2

Select Datalength(@sql1+ @sql2)
Run Code Online (Sandbox Code Playgroud)

它回来了 14677

现在的问题是为什么varchar(max)不能存储14677信息字节?当文件说它可以存储2GB数据时

sql t-sql sql-server dynamic-sql varcharmax

6
推荐指数
1
解决办法
1108
查看次数

使用运算符“||”连接字符串 或 format() 函数

我们应该使用连接运算符||还是format()触发函数中的函数?

使用其中一种相对于另一种是否有任何优势,或者是否取决于个人喜好和可读性?

您是否会说对于简单的串联,使用运算符,但对于更复杂的串联,使用格式函数?

postgresql concatenation dynamic-sql

6
推荐指数
1
解决办法
3177
查看次数