我有一个函数需要从多个表中返回结果。在Postgresql (现在是9.1,计划很快迁移到9.2 )中可以做到这一点吗?如果是这样,是如何实现的。
例如
create or replace function f1()
returns ???
as $body$ begin
return query select x.*
from users x;
return query select x.*
from user_preferences x join users y using(user_id) ; -- more where clauses
我有这样的程序:
CREATE OR REPLACE PROCEDURE INSERT_COUNTRY(IN P_NAME VARCHAR(50))
SPECIFIC INSERT_COUNTRY
LANGUAGE SQL
BEGIN
INSERT INTO "BUILDING MANAGEMENT".COUNTRY (COU_NAME) VALUES (P_NAME);
END
如果数据是否插入到表中,我如何设置一个条件来打印由我定义的消息。
我有一个大表(32 GB),大约有5200万行。表结构包含几个数值列和几个字符串列,我只选择了一个varchar列。我不需要剩下的。
这个varchar列实际上是JSON数据,我使用定制的python解码器将其插入到MongoDB中。
我目前遇到的问题是,我的工作站有16 GB的内存,我不想只在整个32 GB的表上运行python解码器。每当我试图使用下面的查询找到结果集的大小时,它就会与错误的2013: Lost Connection to MySQL server在中途崩溃。
select sum(row_size)
from (
select
char_length(js
我有一个大约300k的对象列表。我在Web API上批量发送这篇文章。因为这个对象是多层的,所以我决定批量发送1000个转换为JSON字符串的项目。目前,我看到每秒插入大约50条记录,我估计大约需要1+小时才能完成。 在我的SQL Server中,我有一个接受JSON字符串并使用OPENJSON的存储过程。数据被插入到TempTable中,然后我重复使用while,如下所示(不确定是否有更好的方法) While (Select Count(*) From #temporganisations Where process_ind = 0) > 0
Begin
select top 1
下面是一个场景:
过程1创建临时表#t。
过程1执行过程2。
程序2填充#t。
在过程1中,我从#t插入一个真正的表,这样我就可以查看数据。数据就在那里。
在查看完这些数据后,我立即使用自连接进行更新.就像这样:
update b
set b.column1 = a.column3
from #t a
inner join #t b on a.id = b.id;
应该更新的记录不是更新的。
但是,如果我将#t更改为真正的表"dbo.t“,并执行完全相同的操作,它就会工作。
我真的很困惑。有人知道为什么会这样吗?谢谢。
SQL Server 2008标准版
我有一个用于将新数据插入到表中的存储过程,它的工作方式与预期一致。但是,我现在需要使用查询结果作为参数多次调用这个存储过程。
例如:
select
name, age, foo, bar
from
sometable
where
wobble = 'true'
exec insertProc name age foo bar
我知道我可以使用游标来达到这个目的,但是我一直在读“...but游标不好”,我不知道还有其他方法可以做到这一点吗?
我可以创建一个临时表,但是当我尝试从它中选择时,它会说该表不存在。我猜想它是因为DB::语句和DB::select以某种方式获得了与数据库不同的会话,但我不知道如何修复它。
如何在同一个脚本中创建临时表、插入表并从中选择?
下面是tinker的输出,它说明了这个问题:
DB::select("select count(*) from users"); //12
DB::statement("create temporary table tempUsers like users"); //true
DB::statement("insert into te
我们需要在CRM中有一个半复杂的报告,显示一些累积的潜在价值。我看到这个报告工作的唯一方式是编写一个存储过程,该存储过程创建两个临时表,并使用游标计算/累积数据。然后是从存储过程中获取数据以便可以从报告服务器报告中访问的问题。有没有人知道这是否可能?如果我可以选择编写自定义SQL语句来生成报告数据,那就太好了。
有什么建议吗?
编辑:
为了阐明我对游标的使用,我可以确切地解释我在用它们做什么。
我的报告(应该是图表btw)的基础是一个表(table1),它有3个相关的列:
Start date
Number of months
Value
我创建了一个临时表(temp1),其中包含以下列:
Y
"select tableshow from alltable where branch =
'"+session.getAttribute("Branch")+"' and sem =
'"+session.getAttribute("Sem")+"'";
通过这个查询,我获取了表的名称,例如,假设表名为'fifthsem‘,它存储在exe变量中
现在我需要在这个变量exe上应用查询作为表名。我需要从这个表的过程中获取全部数据,并在jsp页面中显示。
使
在我的SQL Server2005数据库中,用户属于某个角色,并且该角色已被授予对所有存储过程的execute权限。其中一个存储过程将数据插入名为tableA的表中。
用户对tableA具有显式拒绝权限。但是,用户仍然可以执行存储过程来插入新数据。
有没有办法防止用户向表中插入新数据(除了将用户从具有execute权限的角色中删除)
create table tableA
(id int identity(1,1), data varchar(20)
)
create proc uspInsertTableA
(@data varchar(20))
with execute as ca
我有一个名为Sp_Ejecucion的存储过程,它创建了一个具有以下结构的临时表:
CREATE TABLE #CambioResult (FOL INT IDENTITY, RESULT INT)
在该命令之后运行另一个Sp,如下所示
BEGIN TRAN T1
DECLARE @vnCambiaRollTurnoResult INT = 0,
@vnReacomodoMarcajesResult INT = 0,
@Result INT = 0
BEGIN TRY
exec nsp_Exec
我正在尝试设置一个计划的作业,只需一步即可将存储过程中的结果插入到表中。
INSERT INTO results_table EXEC sproc
作业将执行并报告成功。然而,没有任何东西被插入到表中。当我从SSMS执行相同的脚本时,结果会被插入。什么可能会导致该问题?
**编辑作业归sa所有,步骤以dbo身份执行。历史记录中的所有运行都报告为已成功完成。我试着把步骤改成
INSERT INTO results_table(field_names) (SELECT values FROM table GROUP BY column_name)
它以类似的方式运行
**编辑问题仅在我从mast
我正在使用2008。我正在尝试创建一个存储过程,以便将几行数据(答案)合并为目标表上的一行。这使用了答案表中的“table_name”字段和“column_name”字段。数据看起来如下所示:
answers table
--------------
id int
table_name varchar
column_name varchar
answer_value varchar
因此,目标表(insert/update)将来自“table _name”。分析器中的每一行将填充目标表上的一列。
table_name_1 table
--------------
id int
column_n
我将相当大的数据集(数十亿行)存储到MSSQL Server 2008 R2表中。使用BCP命令将数据推送到表中。但是BCP只是在处理315 batches之后悄然退出,我用different batch size (1 record per batch, 100 record per batch, 1000 record per batch, 1000000 record per batch)进行了测试。但是它并不取决于批处理的大小,只是在处理315 batches之后退出。
使用BCP执行python pyodbc命令。
我不知道为什么会发生这种事。我应该采取什么方法来解决这个问题?对此的
我需要将一个数据插入到另一个table..after中,在这一步中,我只需要从整个table...this中获取插入的数据,我必须使用单个存储的procedure..using,这是sql中的事务概念。
例如,我有一个表abc,其中包含
id name
1 ashu
现在,我已经在其中插入了新数据
id name
2 ashish
我不知道我插入的是什么数据…我是通过存储的procedure...now来做这件事的,我需要那些通过这个插入的数据。