| joint 回复于:2003-03-04 14:23:31
|
上次我在laser的站点他也给我讲解了,不过用在程序里还是不太方便啊
|
| shixl 回复于:2003-03-04 14:33:40
|
利用SQL函数来实现结果集的返回,只是这种方法好像不是十分灵活!!
CREATE FUNCTION mmm() RETURNS SETOF mm AS '
SELECT * FROM mm;
' LANGUAGE SQL;
SELECT * FROM mmm();
|
| shixl 回复于:2003-03-04 14:38:30
|
其实数据库相对于操作系统复杂多了,博大精深。postgres一个开源的软件做到这种程度上已经很不一般了,如果使用它的人多起来,总有一天会和oracle叫板的,这叫应用拉动。到时候我相信会有很多的人都来做postgres的服务,靠买服务赚钱。。。
|
| joint 回复于:2003-03-04 14:43:56
|
http://laser.dyndns.zhengmai.net.cn/index.php?t=msg&th=281&start=0&rid=41&S=d941ce7d2d85fa733ee81c8756700042
-----------------
drop table users;
create table users(
user_id integer,
user_name varchar
);
create or replace function sp_user_get(integer) returns varchar as
'
DECLARE
name varchar;
begin
select INTO name user_name from users where user_id = $1;
return name;
end;'
language 'plpgsql';
create or replace function user_rec() returns setof users as '
DECLARE
rec RECORD;
BEGIN
FOR rec IN select * from users LOOP
RETURN NEXT rec;
END LOOP;
RETURN;
END;' language 'plpgsql';
---------------------8<----------------------------
往表里面插些数据,然后:
select * from user_rec();
再简单些的一个例子:
create or replace function set_return_test(int, int) returns setof int as'
DECLARE
i integer;
BEGIN
FOR i IN $1 .. $2 LOOP
RETURN NEXT i;
END LOOP;
RETURN NEXT 10000;
RETURN NEXT 100000;
RETURN;
END;' language 'plpgsql';
执行的结果如下:
laser_uni=# select * from set_return_test(1, 3);
set_return_test
-----------------
1
2
3
10000
100000
(5 rows)
|
| shixl 回复于:2003-03-04 15:04:03
|
谈谈你们的应用呗
|
| joint 回复于:2003-03-04 15:30:02
|
应用还没有,只是我自己学了一点
|
| gadfly 回复于:2003-03-04 15:35:44
|
joint,你那个java程序还有问题么?
|
| joint 回复于:2003-03-04 15:47:20
|
第一次运行的时候看到了"上海",然后把数据删除再运行,又成乱码了,我还得再看看,感觉所学还甚浅,感叹!!!!
|
| gadfly 回复于:2003-03-04 15:52:07
|
我改了一下,你看看
http://chinaunix.net/forum/viewtopic.php?t=15910
|
| joint 回复于:2003-03-04 15:54:42
|
thank you. 多谢关照.再次感谢
|
| shixl 回复于:2003-03-21 09:15:54
|
upyixia
|
| netkiller 回复于:2003-03-30 15:07:30
|
我现在,用pgsql 做项目。。
目前是
Form ==> jsp ==> javaBean ==> jdbc(pgsql) ==>
如果是select 用view来做。
如果是删除记录并涉及外键。就用触发器去删除外键的表。。
如果是大量查找分析就用select func() 过程来做。然后反回结果集。
如果是一些特定的操作也用过程例:adduser(varchar,varchar),deluser(integer id).......ext
目前还没用到游标。。
总之用最少的连接做大量的处理。尽量在数中完成操作。能用数据库的不用程序做。。。。。。。
大家有什么看法。。你们是怎么做的。。请多指教。。。。。
目前我的pgsql脚本以达到500行了。包括表,view,触发器,过程。。。ext
维护起来真是有点力不从心:)
|