怎样看到每天的九尾参考消息报纸纸内容

请问如何在postgre下声明一个变量 -学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
请问如何在postgre下声明一个变量
来源:互联网 更新时间: 20:04:24 责任编辑:李志喜字体:
用户提出问题:请问如何在postgre下声明一个变量 ,具体如下:
通过互联网整理获得以下解决方法:=================1楼=====================
错误信息是什么?
参考一下手册中的例子
引用CREATE&OR&REPLACE&FUNCTION&getAllFoo()&RETURNS&SETOF&foo&AS
&&&&r&foo%
&&&&FOR&r&IN&SELECT&*&FROM&foo
相关文章:
上一篇文章:下一篇文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号WEB开发(1)
这篇文章主要介绍了Windows下Postgresql数据库的下载与配置方法 ,需要的朋友可以参考下
注意下载的是二进制版,不是带Windows Installer的。
执行下列步骤前,暂作以下假定:
PostgreSQL拟装在d:\postgresql
数据库以后拟存放在d:\postgresql\data
首先下载postgresql-9.2.4-1-windows-x64-binaries.zip最新版待用,下列步骤达到手工安装好PostgreSQL,初始化数据库,将PostgreSQL注册为服务。
1、PostgreSQL.zip解压至d:\postgresql后,创建一个data目录;
2. 设置环境变量,编辑批处理文件 配置环境变量.vbs(永久生效)
a) 内容如下
error resume next
sysenv=CreateObject(&WScript.Shell&).Environment(&system&)
= CreateObject(&Scripting.FileSystemObject&).GetFolder(&.&).Path
sysenv(&PGHOME&)=&D:\pgsql&
sysenv(&PGHOST&)=&localhost&
sysenv(&Path&)=sysenv(&PGHOME&)+&\&+sysenv(&Path&)
sysenv(&PGLIB&)=sysenv(&PGHOME&)+&\lib&
sysenv(&PGDATA&)=sysenv(&PGHOME&)+&\data&
wscript.echo&PostgreSQL环境变量安装成功!不需要重新启动计算机啊!&
b) 执行如下:
3、在空白处按住shift点击鼠标右键,新开一个cmd窗口,并cd 至d:\postgresql\bin ;
4. 初始化并创建数据库(一次即可)
initdb.exe -D d:\postgresql\data -E UTF-8 --locale=chs -U postgres -W
-D :指定数据库簇的存储目录E:\pgsql\data
-E :指定DB的超级用户的用户名postgres
--locale:关于区域设置(chinese-simplified-china)
-U :默认编码格式chs
-W :为超级用户指定密码的提示
4. 启动数据库
注:若未注册为系统服务,则需每次手动启动,否则pgadmin3连接数据库失败
pg_ctl -D d:\postgresql -l logfile start
显示如下:
启动后,在数据库安装的主目录下生成一个logfile文件:D:\postgresql\logfile
5. 注册为win8系统服务
注:需管理员权限方可
pg_ctl register -N PostgreSQL -D D:\postgresql\data
查看已经注册的服务:win+R在弹出的运行框中,输入:services.msc,如下:
net start PostgreSQL 查看是否启动:命令行下输入tasklist
netstat –an 可以查看所有和本地计算机建立连接的IP 卸载服务:同样需要管理员权限,两种方式
1) pg_ctl unregister –N PostgreSQL (win8)
2) sc delete PostgreSQL (PostgreSQL)
6. 配置pgAdmin3客户端
目录为D:\postgresql\bin\ pgAdmin3,双击,配置
7. 连接数据库成功
如何让postgresql支持远程登录呢?
只需要在服务器端配置
修改两个文件:
postgresql.conf
pg_hba.conf
-----------------
比如环境中db server ip为10.10.3.5,&
客户端的ip为10.10.3.5
在postgresql.conf文件添加:
listen_addresses = '*'
在pg_hba.conf文件添加:
host all all 10.10.3.1/24 trust
24表示掩码为255.255.255.0,所以表示对这个子网的所有IP开放了。
就可以在10.10.3.5上访问10.10.3.5了。
完成后执行一下
C:\Windows\System32&net stop PostgreSQL
C:\Windows\System32&net start PostgreSQL
pgsql的连接与数据库的创建
对于每种数据库管理系统,都会提供一个命令行管理接口,例如Oracle的sqlplus,SQL Server的isql和osql等。
凡是用图形管理界面可以实现的功能原则上都可以通过命令行界面命令实现。两者各有优缺点,使用场合不同。在windows下当然常用图形管理界面,因为在图像管理界面中往往都嵌有命令行工具,而在unix和linux下,当然就常用命令行工具了,除了我们在类unix下主要使用字符界面的原因外,还因为大部分情况下我们只能通过telnet或ssh工具远程连接服务器进行操作,此时也只能使用命令行了。
从开始目录打开SQL shell(pgsql),该可执行程序为E:\PostgreSQL\bin\psql.exe。输入密码得到如下图界面:
也可以在修改了系统环境变量Path之后(增加PostgreSQL\bin目录),从命令行直接启动pgsql。
至此,PostgreSQL在Windows下安装完毕。
总结psql操作:
[PostgreSQL]进入和退出plsql
#进入plsqlpsql[option...][dbname[username]]&
demo dbname& &&
进入dbname数据库,用户名是demo&
#退出psql程序&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:173672次
积分:6149
积分:6149
排名:第3298名
原创:429篇
转载:152篇
(44)(38)(1)(2)(2)(1)(1)(5)(2)(7)(3)(7)(25)(26)(87)(33)(1)(6)(26)(55)(26)(4)(26)(37)(46)(35)(36)(2)postgresql如何声明和定义record
postgresql如何声明和定义record
09-08-11 &匿名提问11649人阅读
postgreSQL
NameCREATE FUNCTION -- 定义一个新函数Synopsis
CREATE [ OR REPLACE ] FUNCTION
&& name( [ [argmode] [argname]argtype[ { DEFAULT | = }default_expr] [, ...] ] )
&&&&&&& [ RETURNSrettype
&&&&&&&&& | RETURNS TABLE (column_namecolumn_type[, ...] ) ]
&& { LANGUAGElang_name
&&&&&&& | WINDOW
| IMMUTABLE | STABLE | VOLATILE
&&&&&&& | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
&&&&&&& | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
&&&&&&& | COSTexecution_cost
&&&&&&& | ROWSresult_rows
&&&&&&& | SETconfiguration_parameter{ TOvalue| =value| FROM CURRENT }
&&&&&&& | AS 'definition'
&&&&&&& | AS 'obj_file', 'link_symbol'
&&&&&&& [ WITH (attribute[, ...] ) ]
CREATE FUNCTION 定义一个新的函数。 CREATE OR REPLACE FUNCTION 将要么创建一个新函数,要么替换现有的定义。
如果包含了一个模式名,那么函数就在指定的模式中创建。否则它会在当前模式中创建。新函数的名字不能和同一个模式中的任何带有同样参数类型的函数同名。不过,参数类型不同的函数可以同名(这叫做重载)。
要更新一个现有函数的定义,使用 CREATE OR REPLACEFUNCTION。我们不能用这个方法修改一个函数的名字或者参数类型(如果你这么干,那么你就会创建一个新的,不同的函数)。同样,CREATEOR REPLACE FUNCTION也不会允许你修改一个现有函数的返回类型。要做这些事情,你必须删除并重新创建函数。(如果使用
OUT 参数,那就意味着除了删除函数,你不能修改任何 OUT 参数的类型或者名字。)
如果你删除然后重建一个函数,新函数和旧的将是不同的实体;你就需要删除现有引用了老函数的规则,视图,触发器等等。 使用CREATE OR REPLACE FUNCTION可以在不破坏引用该函数的对象的前提下修改函数定义。
创建这个函数的用户成为函数的所有者。
要创建的函数名字(可以用模式修饰)。
参数的模式:是 IN、OUT、或者 INOUT。 如果省略,缺省是IN。
一个参数的名字。有些语言(目前只有PL/pgSQL)允许你在函数体里使用参数名字。对于其它语言,这个参数名字只是额外的文档。但是输出参数的名字是非常重要的,因为它定义了结果行类型的字段名。(如果你省略了一个输出参数的参数名,那么系统会选取缺省的字段名。)
该函数的数据类型(可以有模式修饰)。如果有的话,参数类型可以是基本类型,也可以是复合类型,域类型,或者可以引用一个现有字段相同的类型。
根据实现语言的不同,我们还可以在这上面声明 &伪类型&, 比如cstring。伪类型表示实际的参数类型要么是没有完整地声明,要么是在普通的 SQL数据类型之外。
一个字段的类型是用 tablename.columnname%TYPE表示的;使用这个东西可以帮助函数独立于表定义的修改。
返回数据类型。输出类型可以声明为一个基本类型,复合类型,域类型,或者引用一个表的现有字段。根据实现语言的不同,我们还可以在这上面声明&伪类型&, 比如
如果存在 OUT 或者 INOUT 参数,则可以省略 RETURNS子句。如果出现了,那么它必须和输出参数隐含的结果类型兼容:如果有多个输出参数,必须是
RECORD, 如果只有一个输出参数,则与其相同。
SETOF 修饰词表示该函数将返回一套条目, 而不是一条条目。
一个字段的类型是通过写 tablename.columnname%TYPE 来引用的。
用以实现函数的语言的名字。 可以是 SQL,C, internal,或者是用户定义的过程语言名字。为了保持向下兼容,该名字可以用单引号包围。
这些属性告诉系统把对该函数的多次调用替换成一次是否安全。 主要用于运行时优化。至少应该声明一个选择。如果任何一个都没有出现,那么VOLATILE 是缺省假设。
IMMUTABLE表示该函数在给出同样的参数值时总是返回相同的结果;也就是说,它不做数据库查找或者是使用那些并没有直接出现在其参数列表里面的信息。如果给出这个选项,那么任何带着全部是常量参数对该函数的调用都将立即替换为该函数的值。
STABLE表示在一次表扫描里,对相同参数值,该函数将稳定返回相同的值,但是它的结果可能在不同 SQL语句之间变化。这个选项对那些结果倚赖数据库查找,参数变量(比如当前时区),等等的函数是很合适的。 还要注意
current_timestamp 族函数是 stable(稳定)的,因为它们的值在一次事务中不会变化。
VOLATILE表示该函数值甚至可以在一次表扫描内改变,因此不会做任何优化。很少数据库函数在这个概念上是易变的; 一些例子是 random(),currval(),timeofday()。请注意任何有副作用的函数都必需列为易变类,即使其结果相当有规律也应该这样,这样才能避免它被优化;一个例子就是setval()。
CALLED ON NULL INPUT
RETURNS NULL ON NULL INPUT
CALLED ON NULL INPUT(缺省)表明该函数在自己的某些参数是空值的时候还是可以按照正常的方式调用。剩下的事情是函数的作者必须负责检查空值以及相应地做出反应。
RETURNS NULL ON NULL INPUT 或 STRICT 表明如果它的任何参数是 NULL,此函数总是返回 NULL。如果声明了这个参数,则如果存在NULL 参数时不会执行该函数; 而只是自动假设一个 NULL 结果。
[EXTERNAL] SECURITY INVOKER
[EXTERNAL] SECURITY DEFINER
SECURITY INVOKER表明该函数将带着调用它的用户的权限执行。这是缺省。SECURITY DEFINER声明该函数将以创建它的用户的权限执行。
关键字 EXTERNAL 的目的是和 SQL兼容,但是它是可选的,因为这个特性适合于所有函数,而不仅仅外部函数。
definition
一个定义函数的字串常量;含义取决于语言。它可以是一个内部函数名字, 一个指向某个目标文件的路径,一个 SQL查询,或者一个用过程语言写的文本。
obj_file, link_symbol
这个形式的 AS 子句用于在函数的 C 源文件里的函数名字和 SQL函数的名字不同的时候可动态装载 C 语言函数。 字串 obj_file 是包含可动态装载的对象的文件名,而
link_symbol 是函数的链接符号,也就是该函数在 C源文件里的名字。如果省略了链接符号,那么就假设它和被定义的 SQL 函数同名。
历史遗留的函数可选信息。下面的属性可以在此出现:
等效于 STRICT 或者 RETURNS NULL ON NULL INPUT
isCachable
isCachable 是 IMMUTABLE 的过时的等效物;不过出于向下兼容,我们仍然接受它。
属性名是大小写无关的。
这里是一些简单的例子,用于帮助你开始掌握这个命令。
CREATE FUNCTION add(integer, integer) RETURNS integer
&&&&&&& AS 'select $1 + $2;'
&&&&&&& LANGUAGE SQL
&&&&&&& IMMUTABLE
RETURNS NULL ON NULL INPUT;
用 PL/pgSQL 自增一个整数,利用参数名:
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
&&&&&&& BEGIN
&&&&&&&&&&&&&&& RETURN i + 1;
&&&&&&& END;
$$ LANGUAGE
返回一个包含多个输出参数的记录:
CREATE FUNCTION dup(in int, out f1 int, out f2 text)
&&&&&&& AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$
&&&&&&& LANGUAGE SQL;
SELECT * FROM dup(42);
你可以通过命名明确的复合类型的方法冗长地干同样的事情:
CREATE TYPE dup_result AS (f1 int, f2 text);
CREATE FUNCTION dup(int) RETURNS dup_result
&&&&&&& AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$
&&&&&&& LANGUAGE SQL;
SELECT * FROM dup(42);
在 SQL:1999 里定义了一个CREATE FUNCTIONPostgreSQL的和它类似但是不兼容。这个属性是不可移植的,可以使用的不同语言也是如此。
为了和一些其他的数据库系统兼容,argmode 可以在argname之前或者之后写,但是只有第一种访法是标准兼容的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:550704次
积分:6086
积分:6086
排名:第3350名
原创:99篇
转载:101篇
评论:71条
(1)(1)(3)(1)(1)(3)(2)(1)(1)(1)(1)(3)(2)(3)(2)(5)(2)(4)(3)(2)(6)(4)(4)(2)(3)(3)(2)(1)(8)(2)(3)(5)(7)(4)(2)(10)(2)(3)(4)(7)(10)(15)(14)(8)(9)(8)(12)

我要回帖

更多关于 参考消息报纸版 的文章

 

随机推荐