在MS T-sql 里这样的表达,在pg 里怎么写?

wzhiyuan 2007-09-05 11:15:58
create proc insertfav(@userid int ,@topicid int)
as
if not exists(select id from favor where userid=@userid and topicid=@topicid)
begin
insert into favor(userid,topicid) values(@userid,@topicid)
if (select count(*) from favor where userid=@userid)>=30
delete from favor where userid=@userid and id not in(select top 30 id from favor where userid=@userid order by id desc )
end
...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzhiyuan 2007-09-07
  • 打赏
  • 举报
回复
问题解决谢谢。
对了,还有两个小问题,我已经结帐了,不知你能否看到,能的话也回答一下,
1,function 的参数,我知道可以用$1,$2这样的位置指示符来表示,但这样代码的可读性不好,
我也知道可以用别名,但由于别名前不加任何区分符,所以很容易跟表的列名看混,这个问题是不是没有好的办法?
2,如果function 返回值为空的话,调用的时候是不是也一定要放在表达式里来执行,我是select xxx(t1,t2)这样的,没有专门的 execute 语句吗 ?
懒得去死 2007-09-06
  • 打赏
  • 举报
回复
参考以下:
http://bianbian.sunshow.net/index.php/technology/52.html
懒得去死 2007-09-06
  • 打赏
  • 举报
回复
对。
wzhiyuan 2007-09-06
  • 打赏
  • 举报
回复
谢谢,链接我已经看了,然后我也找到了手册相关的部分也仔细看了,主要的部分其本明白了。
不过现在又出现的新问题是我执行create function.......language plpgsql时
有错误提示,plpgsql 未安装要create language 来安装;
我create language plpgsql时又提示需要superuser,现在是不是我必须请求
服务器数据库管理员来给我权限或为我create laguage才行,我自己是不是没什么办法了?
wzhiyuan 2007-09-05
  • 打赏
  • 举报
回复
不用管语义,只要翻译语法就行,我主要是对pg 里的语法不熟,不知道怎么写成存储过程,怎么样用if表达式。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧