标签: sql-function

SQL函数应该是大写还是小写?

我是SQL的新手,我想知道编写函数的正确方法是什么.我知道像SELECT这样的语句的规范是大写的,但函数的规范是什么?我见过人们用小写写的,其他用大写的.

谢谢您的帮助.

mysql sql function sql-function

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

检查变量是否包含 PostgreSQL 函数中的 x

在 PostgreSQL 函数中,检查传入的变量是否包含特定字母的语法是什么?

传递给函数的变量是逗号分隔的字母列表,我想检查此列表是否包含字母 a 或 x。

我想代码看起来像这样:

-- var typically looks like 'a,b,c,x'
if (some way of stripping anything other than a and x from var) ~* [ax]
  -- Do something else
end if;
Run Code Online (Sandbox Code Playgroud)

我认为正则表达式是答案,我只是对语法不是 100% 确定。

谢谢!

regex postgresql sql-function

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

从sql中的标量函数返回2列值

在SQL Scalar函数中,我们可以使用一个变量返回2个值

ALTER FUNCTION [report].[fGetKPI] (@metricName AS VARCHAR(50))
RETURNS SMALLINT
AS
BEGIN
    DECLARE 
        @kipId AS SMALLINT,
        @metricId as SMALLINT;

    SELECT TOP 1 @kipId = [KPI_Id], @metricId = [MetricId] FROM report.[KPIDetails] WHERE [MetricName] = @metricName;

    IF (@kipId IS NULL OR @metricId IS NULL)
        DECLARE @Error AS INT = dbo.fThrowError('No key found for the component "' + @metricName + '"');
    RETURN (select @kipId,@metricId);
END
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-function sql-server-2008

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

Postgres 中的删除函数

我有以下功能:

CREATE FUNCTION "updateStat"(_request_date timestamp without time zone, _calls integer, _latency integer) RETURNS void AS $$
BEGIN
  LOCK TABLE "statistics" IN SHARE ROW EXCLUSIVE MODE;
  WITH upsert AS (UPDATE "statistics" set calls = calls + _calls, total_latency = total_latency + _latency WHERE request_date=_request_date RETURNING request_date)
  INSERT INTO "statistics" ("request_date", "calls", "total_latency") SELECT _request_date, _calls, _latency WHERE NOT EXISTS (SELECT "request_date" FROM upsert);
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

我怎样才能放弃这样的功能?

我尝试了以下方法:

# DROP FUNCTION updateStat(void);
ERROR:  function updatestat(void) does not exist
# DROP …
Run Code Online (Sandbox Code Playgroud)

sql postgresql plpgsql identifier sql-function

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

Postgres:函数中的临时表是持久的。为什么?

我的 postgresql 数据库中有以下功能:

CREATE OR REPLACE FUNCTION get_unused_part_ids()
  RETURNS integer[] AS
$BODY$
DECLARE
  part_ids integer ARRAY;
BEGIN
  create temporary table tmp_parts
      as
  select vendor_id, part_number, max(price) as max_price
    from refinery_akouo_parts
   where retired = false
   group by vendor_id, part_number
  having min(price) < max(price);

  -- do some work etc etc

  -- simulate ids being returned
  part_ids = '{1,2,3,4}';
  return part_ids;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION get_unused_part_ids()
  OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

这会编译,但是当我运行时:

select get_unused_part_ids();
Run Code Online (Sandbox Code Playgroud)

临时表tmp_parts仍然存在。之后我可以做一个选择。请原谅我,因为我已经习惯了 t-sql/MSSQL 的特定功能。MSSQL 不会出现这种情况。我究竟做错了什么?

sql postgresql temp-tables sql-function postgresql-9.3

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

创建函数时SQL Server中的Begin附近的语法不正确

我陷入了一个无法解决的小问题。

CREATE FUNCTION dbo.fntblPsmHaendlerDailyCostsinfodump(@pDateString varchar(8), @HaendlerID int, @TableName varchar(100),@CountryID int)
RETURNS table
AS BEGIN
RETURN select top 10 * from tblcountry
END
GO
Run Code Online (Sandbox Code Playgroud)

这给我一个错误-

“开始附近的语法不正确”。

我无法确定为什么会出现错误。

t-sql sql-server function sql-function

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

检查字符串是否包含大写字符的函数?

我需要创建一个 SQL Server 函数来检查输入字符串是否包含任何大写字符。如果是,那么它应该返回“OK”。如果不是,则应返回“NOT OKAY”。

当执行以下语句时,它应该返回预期值,如下所示。

PRINT dbo.CheckStringOfUpperAlphaOK('abc') -- Expected: "NOT OK"
PRINT dbo.CheckStringOfUpperAlphaOK('ABC') -- Expected: "OK"
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的,但我不知道如上所述指定返回值。

CREATE FUNCTION CheckStringOfUpperAlphaOK (@String varchar(MAX))
RETURNS VARCHAR(6)
AS
BEGIN
Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^ ][A-Z]%'

While PatIndex(@KeepValues collate Latin1_General_Bin, @Temp) > 0
    Set @Temp = Stuff(@Temp, PatIndex(@KeepValues collate   
  Latin1_General_Bin, @Temp) + 1, 0, ' ')

RETURN @Temp
Run Code Online (Sandbox Code Playgroud)

结尾

sql-function sql-server-2014

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

“CREATE FUNCTION”必须是查询批中的第一个语句

每当我将其与其他 sql 语句一起运行时,都会出现错误:

CREATE FUNCTION' 必须是查询批中的第一个语句

但是,每当我单独执行它时(在我的情况下没有 SELECT * FROM CUSTOMER ,它就可以工作)

   SELECT * FROM CUSTOMER;

   create function udfLogin
    (@username nvarchar(100), @password nvarchar(100)) 
    returns int as
    begin
      if exists(select 1 from CUSTOMER where Username = @username and [Password] = @password)
        return 1
      return 0;
    end
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-function

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

PostgreSQL函数,select返回一个值

我有一张桌子years(每只耳朵的1号).我想创建一个函数,它接受这些年中的每一年并在另一个表上运行查询来计算属于该年份的行数.我尝试用pl/pgsql实现,使用下面的代码,但我没有让它工作或在Internet上找到任何引用.

CREATE or REPLACE FUNCTION func_test(in AAA date, OUT _result int) 
BEGIN
   SELECT SUM(st_length(geom)) as BBB
   FROM hist_line
   WHERE '2006-01-01' BETWEEN valid_from AND COALESCE(valid_to, '9999-12-31');
   RETURN _result BBB;
END;
$$ LANGUAGE plpgsql;
CREATE or REPLACE FUNCTION func_test(date) 

select func_test('2009-01-01');
Run Code Online (Sandbox Code Playgroud)

我无法将函数内部的内容查询恢复为函数的输出.

sql postgresql plpgsql sql-function

0
推荐指数
1
解决办法
7483
查看次数

SQL QUERY不返回ORACLE APEX CLASSIC REPORT的数据

我在Oracle application Express 4.2中有一个SQL查询(PL/SQL函数体返回SQL查询).我创建了一个经典报告,这是我在下面使用的查询.我的查询当前工作正常但我需要使用另一个查询更新此函数中的现有查询,当我尝试更改查询时它不起作用.我究竟做错了什么?任何帮助表示赞赏.

以下是我的工作查询:

declare
  a_query varchar2(5000);
  this_strin varchar2(50);
begin
  a_query := 'select flight_nmbr, sequence_nmbr '||
         'from flights '||
         'where sequence_nmbr >= 0 and data_version_name = ''' ||
    :P3_DATA_VERSION || '''';
  if :P3_SEARCH_NUMBER is not null then
    if instr(:P3_SEARCH_NUMBER, '%') > 0 then
      this_strin := :P3_SEARCH_NUMBER;
  else
      this_strin := '%'||:P3_SEARCH_NUMBER||'%';
  end if;
  a_query := a_query||chr(10)||
            ' and flight_nmbr like '''|| upper(this_strin) ||'''';
  end if;
  return a_query;
    end;
Run Code Online (Sandbox Code Playgroud)

我需要将此函数内的查询更新为以下内容:

SELECT FLIGHT_NMBR, SCHEDULED_LAUNCH_DATE
FROM FLIGHTS
WHERE DATA_VERSION_NAME = 'WORKING' AND
  sequence_nmbr …
Run Code Online (Sandbox Code Playgroud)

oracle plsql sql-function oracle-apex oracle-apex-5

0
推荐指数
1
解决办法
559
查看次数