我有一个函数需要从多个表中返回结果。在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
在Server中,可以声明返回一个或多个结果集的存储过程:
CREATE PROCEDURE dbo.proc1
AS
SELECT 1 a, 2 b UNION SELECT 3 a, 4 b;
我正在尝试从Server 2008+中的字典视图中检测所有这样的存储过程。令人遗憾的是,我似乎无法在以下两种程序中找到识别这种程序的独特标志:
INFORMATION_SCHEMA.ROUTINES
sys.procedures
这里还有一个,它表明在返回结果集的过程和不返回结果集的过程之间,元数据似乎没有区别。
它能以一种正式正确的方式(而不是寻找任何黑客/诡计)来完成吗?如果是
有一个几乎相同但没有真正回答的问题。
我正在将应用程序从MS SQL Server迁移到PostgreSQL。在代码中的许多地方,我使用局部变量,所以我想进行需要更少工作的更改,所以你能告诉我翻译以下代码的最好方法是什么吗?
-- MS SQL Syntax: declare 2 variables, assign value and return the sum of the two
declare @One integer = 1
declare @Two integer = 2
select @One + @Two as SUM
这将返回:
SUM
-----------
3
(1
我使用的是SQL Server2005,我想知道如何从transact-sql中访问不同的结果集。下面的存储过程返回两个结果集,例如,我如何从另一个存储过程访问它们?
CREATE PROCEDURE getOrder (@orderId as numeric) AS
BEGIN
select order_address, order_number from order_table where order_id = @orderId
select item, number_of_items, cost from order_line where order_id = @o
我尝试从存储过程中返回几个值,而不使用Netezza中的reftable。
CREATE OR REPLACE PROCEDURE TMP_GETTABLEINFO(CHAR(any), VARCHAR(any), VARCHAR(any)) returns char(1), varchar(30) EXECUTE AS OWNER LANGUAGE NZPLSQL AS begin_proc DECLARE a ALIAS FOR $1; b ALIAS FOR $2; BEGIN ... RETURN a, b; END;
有可能吗?多么?
我的结果是:ERROR [HY
我有一个返回多个结果集的存储过程,如下所示 CREATE procedure Sp_getempdate
AS
BEGIN
SELECT EMPID, ENAME, JOB, SAL, DEPTID
FROM Sal_employee
SELECT DEPT ID, DAME, COL
FROM Sal_Department--second result set
END 在SSRS中,在使用VS 2017创建新报告时,我为数据集配置了存储过程。它只使用从第一个结果集返回的列创建数据集。它不标识第二个结果集。 如何从上述存储过程中为这两个结果集创建数据集
我希望将存储过程输出参数映射到实体。
例如,
PROCEDURE ForExample
@ID int,
@LastUpdate datetime OUTPUT
AS
Update EntityTable Set LastUpdate = GETDATE() Where ID = @ID
Select @LastUpdate = LastUpdate From EntityTable Where ID = @ID
我希望将@LastUpdate输出参数映射到实体属性。
在存储过程映射对话框中,@LastUpdate参数显示为InOut参数(两种方式的绿色箭头)。无论是否将参数映射到属性,都会得
我是PostgreSql的新手,曾经使用过SQL Server。从Sql Server的角度来看,我很难理解一个很简单的场景。我需要将变量的值作为查询结果(例如数据集)。 如果是Sql Server,我会有这样的东西: Declare @cnt int
Delete from MyTable
set @cnt = @@ROWCOUNT
select @cnt as FinalResult 预期的结果是使用变量的值(例如@cnt作为我的结果集)。我在PostgreSql中尝试了同样的方法,使用了以下代码: DO $$
DECLARE
affected_rows int
我在同一个PHP文件/页面中有两个查询,当它们像这样工作时,我就会得到结果。
$query1 = mysqli_query($link, "SELECT * FROM tableA");
$restult1= mysqli_fetch_assoc($query1);
$query2= mysqli_query ($link,"SELECT COUNT(id) AS total FROM tableB");
while ($row = mysqli_fetch_assoc($query2)){
echo '<option value=
我很难获得由sqlalchemy调用的存储过程返回的结果,我看到即使存储过程返回的是一个整数sql alcehmy。结果集设置为无,这导致了一些问题,有人能告诉我发生了什么事吗?
CREATE PROCEDURE [SYSDATA].[getCertificateInstallStatus]
@DVSystemName [varchar](max)
AS
BEGIN
declare @system_state int = (SELECT state FROM SYSDATA.certificate where DVSystemName = @DVSystemName)
if @system_
我试图在MySQL (5.x)的WHERE语句中使用存储函数的结果,但它失败了,因为在函数中,我从表中选择值到一个整型变量中,然后返回它们/ it,如果SELECT返回超过1行,这显然不起作用。我尝试过返回表(据我所知,MySQL中的TABLE表示数组),但也不起作用。
有没有办法让我这样做:
SELECT ID FROM myTable WHERE ID IN my_function(params);
谢谢。
我需要查询一个存储过程,并根据该过程的结果集在条件语句中做出决定
例如,我有一个存储过程"Main_SP“
现在,如果"Main_SP“的结果是”null“,那么结果应该是”Tweety“,但是如果结果集不是null,则应该检索结果集,
该怎么做呢?
我试着追随,还有一些其他的,但都没成功。
SELECT
case Main_SP('MyVariable')
when 'null'
then 'Tweety' end
FROM SYSIBM.SYSDUMMY1 WITH UR
我有一个由第三方工具调用的存储过程。我相信它在使用ODBC,但它本质上是一个黑匣子。DBMS是Server 2012。
当存储过程是一个简单的选择时,第三方工具接收结果集,但是当它首先访问一个临时表时,它不会。例如,以下两个存储过程从SSMS返回相同的结果,但只能从工具成功地调用第一个存储过程。
我不明白的是,从外部的角度来看,这两个函数是如何不同的。它们都采用相同的参数,而最后一个查询的结果也是一样的。
存储过程在哪里执行?
--This one works when called both ways
CREATE PROC [dbo].[sp_GetUsers]
AS
Selec