开发者社区> 问答> 正文

有个sql 语句转换成 postgresql怎么处理。? 400 报错

有个sql 语句转换成 postgresql怎么处理。? 400 报错

@kenyon_君羊 你好,想跟你请教个问题:

请问这个sql 语句,用postgresql怎么写。转换postgresql 过程语句

create   PROCEDURE TT_SepSize2
(
 @size nvarchar(50),
 @a money output,
 @b money output,
 @c money output,
 @d money output
)
as
begin
declare @i int
declare @s nvarchar(50)
set @a=0
set @b=0
set @c=0
set @d=0
--x1:
set @i=CHARINDEX('*',@size) --未找到返回0
if @i>0 --如果找到第1个*
begin
 set @s=left(@size,@i-1)
 set @a=cast(@s as money) --第1个*的左边是a
 set @size=right(@size,len(@size)-@i)
 set @i=CHARINDEX('*',@size) --未找到返回0
 if @i>0 --如果找到第2个*
 begin
  set @i=CHARINDEX('*',@size) --未找到返回0
  if @i>0 --如果找到
  begin
   set @s=left(@size,@i-1)
   set @b=cast(@s as money) --第2个*的左边是b
   set @size=right(@size,len(@size)-@i)
   --求z
   set @i=CHARINDEX('*',@size) --未找到返回0
   if @i>0 --如果找到第3个*
   begin
    set @s=left(@size,@i-1)
    set @c=cast(@s as money)--第3个*的左边是c
    set @size=right(@size,len(@size)-@i)
    set @i=CHARINDEX('*',@size) --未找到返回0
    if @i>0 --如果找到第4个*
    begin
     set @s=left(@size,@i-1)
     set @d=cast(@s as money)--第4个*的左边是c 
    end else
    begin
     set @d=cast(@size as money) --如果没有找到第4个*,剩下的数是d
    end
   end else --如果没有找到第3个*
   begin
    set @c=cast(@size as money) --如果没有找到第3个*,剩下的数是c
   end --求z结束  
  end else
  begin
   set @b=cast(@size as money) 
  end--求y结束
 end else --如果没有找到第2个*
 begin
  set @b=cast(@size as money) --如果没有找到第2个*,剩下的数是b
 end--求x2结束
end else --如果没有找到第1个*
begin
 set @a=cast(@size as money)--如果没有找到第1个*,整个数是a
end--求x1结束
end

GO

 

展开
收起
爱吃鱼的程序员 2020-06-01 11:11:43 554 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    熟悉mssql的话,学一下pg的存储过程语法就可以了

    2020-06-01 11:11:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgreSQL 物联网六脉神剑 立即下载
PostgreSQL在哈啰的实践-周飞 立即下载
PostgreSQL高并发数据库应用数据 立即下载