刚接触这东西,希望大家多指教,想写一个简单的存储过程如下:在存储过程中加入一个参数@Psql ,由程序调用时返回一个值,其实这个值就是SQL的where部分,即查询的条件。
CREATE PROCEDURE [dbo].[SelectMainTable]  @Psql Varchar(240)   ASselect * from 表 where @Psql //这里是如何写的呀?@Psql 的value比如是 '编号='12345'之类的'如果写成select * from 表 where @Psql 的话看来是不符合要求的。
见笑了,谢谢参与。

解决方案 »

  1.   

    哦,看来这个想法是不行的。
    where xxx=@psql还差不多,where后直接跟@psql是不行 的。
      

  2.   

    不知道你用的是什么,我用的是ADO,可以用ADOCommand对象,它可以设置参数。
    var strSql:string;
    var adocmd:TADOCommand;
    strSql:='select * from table1 where field=:paramid';
    adocmd:=TADOCommand.Create(self);
    adocmd.ConnectionString:='';//你自己连接一下。
    adocmd.CommandType := cmdText;
    adocmd.CommandText:=strSql;
    adocmd.Parameters.ParamByName('paramid').Value:=strTemp;
    //假设你的值为strTemp
    rs:=adocmd.Execute;我也有个问题,不知道delphi中有没有转义符啊?转义单引号。
      

  3.   

    不太清楚,好像不行,不过
    如果存储过程中多一个表示字段的参数(@value,@FieldNum),比如说有姓名和地址两个字段
    当想根据姓名查询时@FieldNum取1,@value取相应的值,当想用地址来查询时,@FieldNum取2 ,
    不知行吗?
      

  4.   

    Declare @sql as varchar(200);
    @sql='select * from table where '+@psql;
    exec(@sql);@Psql 的value是 编号='12345'
    则输入参数@psql='编号='+char(39)+'12345'+char(39)
      

  5.   

    因为后面的条件是比较复杂的,可以说是不计条件的,可以自由组合。所以不能象 mmtang3(笑马) ( ) 那样做。楼上的方法我也看看。
      

  6.   

    CREATE PROCEDURE [dbo].[selectmain] @psql varchar(200) as
    Declare @sql as varchar(200) ;
    @sql='select * from info_jibeng where '+@psql; //这一行有问题?
    exec(@sql); 
      

  7.   

    CREATE PROCEDURE [dbo].[selectmain] @psql varchar(200) 
      as
    beign
      Declare @sql as varchar(200) ;
      set @sql='select * from info_jibeng where '+@psql; 
      exec(@sql); 
    end;
      

  8.   

    行了。除了你的beign略有不同,:)
    给分。