在postgres里查询时:当我用select * from myview where patient_name like '%a%' 
出来的table中有三行结果 但是当我用function:
create or replace function GetHealthSummarybyName(varchar(100)) returns setof  myview
as  'select * from myview where patient_name like ''%$1%'';' language 'sql'; 
 
select GetHealthSummarybyName('a') 
 
出来的table中却没有结果。
估计是调用以后传值有了变化
请高手解答,应该怎样改才能将用function做出的结果也是正确的??? 

解决方案 »

  1.   

    你这个是什么语法啊?再说你这个需求也没必要用函数啊
    直接用sql语句就可以了
      

  2.   

    select GetHealthSummarybyName('a')  将a传递到GetHealthSummarybyName,
    执行select * 
        from myview 
        where patient_name like ''%$1%'',其中$1就是传递的值a
    我执行select * 
         from myview 
         where patient_name like '%a%' 是能运行出想要的结果的,但是按照老师要求编一个function,就发现出来的table没有结果了
    这里myview是之前create的一个view
      

  3.   

    returns setof myview(返回值)
      

  4.   

    varchar(100)改成varchar2(100)试下,或者在里面使用的时候加上trim。