如何在plpgsql中创建数据类型?我是PostgreSQL的新手,我正在将oracle过程转换为postgresql函数。他们在oracle中创建了一个类型,类似于:
TYPE t_array IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
然后在下面的过程中声明并使用它:
strings t_array;
strings(1) := lv_str;
我想在plpgsql中创建t_array type并在函数中使用它,我如何创建这样的类型,或者在plpgsql中是否有内置类型来实现此功能?
面对一些关于Postgresql函数如何工作的误解。任务是检查在我的数据库中是否已经存在一些id。如果是这样的话-从现有的记录中返回一些数据。如果没有-插入一些数据并返回所有内容。 CREATE OR REPLACE FUNCTION test(_id varchar, _data varchar[]) RETURNS varchar[] AS $$
BEGIN
IF EXISTS (SELECT 1 FROM my_table WHERE id = _id) THEN
SELECT * FROM my_table WHERE id = _id;
ELSE
我希望在函数中使用PostgreSQL (它接受某种类型的数组和表达式或相同类型的值)来构造以某种任意顺序返回行的查询(附加上下文:我希望增强,它目前是通过不可读的CASE语句实现的):
SELECT id, title, type
FROM posts
ORDER BY
array_position(ARRAY['SuperSpecial','Special','Ordinary']::varchar[], type),
published_at DESC;
这里的问题是,需要从PostgreSQL从数组文字(ARRAY['do
我能否在postgresql中声明一个函数,该函数在其输入参数中将转换传递参数的数据类型。例如:
create or replace function temp(IN var1 integer, IN var2 varchar)
<function body>
select temp('12345','number');
由于传递的参数'12345'是字符串,我希望它在传递给函数时直接转换为整数,如下所示:
create or replace function temp(IN var1 ::integer, IN var2 varc
我编写了一个postgresql函数,如下所示
CREATE OR REPLACE FUNCTION public."UpdateTx"(IN "instructionId" character varying,IN txdata character varying,IN txdetail character varying,IN txstatus character varying,IN resid character varying,IN "timestamp" bigint)
RETURNS character varying
我正在尝试从Java调用一个存储过程。该过程接受两个参数,它们是STRUCT数组。我想向它们传递一个空值。
create or replace FUNCTION inst_into_table_sp
(
v_array1 in cfg.t_array1_name_obj_tab,
v_array2 in cfg.t_array2_obj_tab,
v_var3 in varchar2,
v_var4 in varchar2,
v_err_msg out varchar2
)
...
对象和集合类型的创建方式如下:
create or replace
我正在尝试将值输入到我创建的结构中,但它似乎只适用于"char name50“值。当我运行程序时,它是唯一真正进入和输出的东西。我正在附上一张照片,显示的输出以及。我不明白为什么其他的值没有得到任何价值。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struc
如何在PostgreSQL中创建类型方法?
让我们以以下类型为例:
create type Employee as (
name varchar(20),
salary integer)
我该怎么做?
create method giveraise (percent integer) for Employee
begin
set self.salary = self.salary + (self.salary * percent) / 100;
end
我想在一个名为的表上创建一个触发器,在postgresql中使用来更新另一个名为的表中的值,我尝试用下面的方法来实现。但是我得到了一个错误,那就是"OLD“附近有语法错误。我不明白这有什么问题。这是我的代码:
CREATE OR REPLACE FUNCTION upd8_cred_func
(id1 VARCHAR, gr1 VARCHAR,id2 VARCHAR, gr2 VARCHAR)
RETURNS void AS $$
BEGIN
IF (id1=id2 and gr1 is null and gr2 is not null) THEN
我正在尝试创建一个使用sp_executesql的存储过程。我已经看了很长很硬的,但是我看不出我在代码中做错了什么。一般来说,我对存储过程/sql服务器函数很陌生,所以我猜我缺少一些简单的东西。存储过程变更发生得很好,但是当我尝试运行它时,我会得到一个错误。
错误上说。
Msg 1087, Level 15, State 2, Line 3
Must declare the table variable "@atableName"
手术看起来是这样的。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE
我有一个postgres函数,它接受一个复杂的用户定义类型作为输入。
CREATE OR REPLACE FUNCTION addUser(user IN O_USER) RETURNS VOID
AS
$$
BEGIN
end;
$$ language plpgsql;
CREATE TYPE O_USER AS (
id NUMERIC,
name VARCHAR(50),
addresses O_ADDRESS[]
);
CREATE TYPE O_ADDRESS AS (
id NUMERIC,
city VARCHAR(50)
);
现在我需要从Java调
Linux上的PostgreSQL 8.4。我有一个函数:
CREATE OR REPLACE FUNCTION production.add_customer (
name varchar(100),
email_address varchar(300),
street_address text,
city varchar(50),
state varchar(2),
zip varchar(10),
secret1 bytea,
secret2 bytea,
secret3 bytea,
secret4 bytea,
referrer text
我有一个这样的Ecto模式:
schema "quotes" do
field :quote, :string
field :tags, {:array, :string}
timestamps()
end
在相应的迁移中,有:
create table(:quotes) do
add :quote, :string, size: 145
add :tags, {:array, :string}
timestamps()
end
我希望tags中的每个标签的最大大小为140。如何在迁移中指定此约束?我的目标是在生成的varchar(140)表中包含一
我们如何将(无限数量的)行(即常量表)数组作为PostgreSQL函数的参数/实参传递?
这是一个想法:
CREATE TYPE foo AS (
x bigint,
y smallint,
z varchar(64)
);
CREATE OR REPLACE FUNCTION bar(bigint, foo[]) RETURNS TABLE(a bigint, x bigint, y smallint, z varchar(64)) AS
$$
SELECT $1, x, y, z FROM unnest($2);
$$
LANGUAGE SQL;
下面的函
我正在尝试构建一个包含一些输入参数的查询。没什么值得注意的..。
并非所有参数都需要传递给查询。
如果一个参数不被传递给查询,那么它是否仍然必须作为NULL传递?
如果参数未被传递,我如何构建它以不包含参数?
所以说你有..。
IN name VARCHAR(30),
IN age VARCHAR(2),
IN address VARCHAR(50)
你只想按名字搜索..。
SELECT * FROM Table WHERE
(
NAME LIKE CONCAT(name, '%')
);
这似乎不起作用,因为年龄并没有过去。或者,如果名字和地址,而不是年
我有一个带有以下参数的T-SQL存储过程
CREATE PROCEDURE [dbo].[SaveData]
-- Add the parameters for the stored procedure here
@UserID varchar(50),
@ServiceID varchar(50),
@param1 varchar(50),
@param2 varchar(50),
@endDate datetime
AS BEGIN
.
.
-- my code --
我想知道是否可以将select的结果作为参数传递:
我正在尝试在PostgreSQL中创建一个存储过程。我有这个脚本来创建一个存储过程:
CREATE OR REPLACE PROCEDURE Duplicate_config_v1 (sourcequoteid IN int, sourceconfig IN varchar, destinationquote IN int, scenarioid IN int, flag INOUT varchar(10))
LANGUAGE plpgsql
AS $$
BEGIN
SELECT
Status::varchar(10)
FROM
public.d
无法将值存储到“名称”array.Please中帮助我解决错误.
declare
type name is varray(50) of varchar2(10);
abc varchar2(50);
names name:=name();
begin
for i in 0..4
loop
select cname into abc from customer where cid=1;
names(i):=abc;
dbms_output.put_line(names(i));
end loop;
end;
我对pl/sq
我正在尝试使用DB2来使用嵌套结构化类型(UDT),但遇到了一些问题。
下面是为用例创建类型、表、函数和转换的SQL语句。每条语句都可以正常执行,但在尝试执行简单的select * from t_author时出现错误
CREATE TYPE u_street_type AS (
street VARCHAR(100),
no VARCHAR(30)
) INSTANTIABLE MODE DB2SQL;
CREATE TYPE u_address_type AS (
street u_street_type,
zip VARCHAR(50),
city VARCHAR(
我试图在PostgreSQL中创建一个函数,它将在该表中使用一个表的名称和一个列的名称(在varchars中);并返回一个数组,该数组具有该列的最小值和最大值。
预先我不想知道列的类型。返回数组中元素的类型。
我尝试创建一个函数,将多态anyarray作为返回类型,但始终会碰到语法错误。在SQL和PLPQSQL中都尝试过。
CREATE OR REPLACE FUNCTION minmax(tablename character varying, columnname character varying, OUT minmaxa anyarray) AS
$function$
BEGIN
错误发生应用程序错误异常信息:消息: SQLSTATEHY093:无效参数编号:没有参数绑定
我的财务主任:
public function insertarAction() {
$data = $this->getRequest()->getParams();
// extract($data);
if (isset($data['cod_domicilio'])) {
$municipio = new Application_Model_DbTable_Municipios();