create proc zkcf1 (@zkzh char(9) ,@xm1 char(8) ) 
as 
begin
 select * from zkcf where keyval=@zkzh and xm=@xm1
end如何实现两个参数,只填一个也不会报错!

解决方案 »

  1.   

    要看是什么数据库,有些只需要增加一个默认值,有些需要添加一个开关Optional等等。最好查看该数据库相关的帮助信息以及开发文档。
      

  2.   


    create proc zkcf1 (@zkzh char(9)='12345' ,@xm1 char(8) ='23456') 
    as 
    begin 
    select * from zkcf where keyval=@zkzh and xm=@xm1 
    end 
      

  3.   

    //一般都这么写~
    以下代码未测试!CREATE PROC ZKCF1
    @zkzh char(9)=NULL,
    @xm1 char(8)=NULL
    AS
    SET NOCOUNT ON
    DECLARE @SQL VARCHAR(1000)
    SET @SQL='SELECT * FROM ZKCF WHERE 1=1 '
    IF @zkzh IS NOT NULL
    SET @SQL=@SQL+' AND KEYVAL='''+@zkzh+''''
    IF @xm1 IS NOT NULL
    SET @SQL=@SQL+' AND XM='''+@xm1+''''
    EXEC(@SQL);
      

  4.   

    在客户端传参时,最好要将容易引起SQL注入的信息过滤掉!
      

  5.   

    exec zkcf3   '','丁子亮 '
    这样的会查不出数据啊
      

  6.   

    exec zkcf3  @xm1='丁子亮 ' 
      

  7.   

     query1.SQL.Clear ;
             query1.SQL.Add('exec  zkcf1 '''+trim(EDIT2.TEXT)+''','''+trim(EDIT3.TEXT)+'''' )  ;
             query1.ExecSQL ;
    怎么delphi里查不出数据啊,没有语法错误
      

  8.   

    query1.OPNE试试,有返回值的用OPEN,没有的用ExecSQL