CREATE Procedure GETMC1
@ID char(20)
,@FieldName char(5),@FieldName1 char(5),@TableName char(5),@MC char(20) output
AS  
begin
  declare @sql nvarchar(1000),@para nvarchar(1000)
  set @sql='select @aa='+@FieldName+'  from '+ @TableName+'  where '+ @FieldName1+'='''+@ID+''''
  set @para='@aa char(20) output'
  exec sp_executesql @sql,@para,@MC output
  if(@MC is null)
      select @MC= 'aaa'
 select @MC
END
GO

解决方案 »

  1.   

    可是得不到我想要的值,我的意思是这样的
    有两个表一个人员的基本信息表(编号,姓名,民族代码),一个民族表(民族代码,民族名称),我想在查询基本信息表时,显示民族名称,当然这只是一个民族表,还有诸如政治面貌这个的表,所以就想做个存储过程,分别调用
    调用形式如:select getmc1('bh123','民族名称',民族代码','表名',返回参数值),getmc1(同民族参数形式)from 基本信息表
    上面的存储过程不知可不可以实现,或者有没有更好的方法,谢谢指教
      

  2.   

    这也要用存储过程?
    不就是一句SQL吗?
    基本信息表:PERSON(P01[编号],P02[编号],P03[民族代码])
    民族表:     MIN(M01[民族代码],M02[民族名])
    根据某一人员编号查所有信息:
    select A.P01,A.P02,A.P03,isnull(B.M02,'无民族名称') 
          FROM PERSON A
          LEFT JOIN MIN B ON A.P03=B.M02
          WHERE P01='某一人员编号'
    其他同上
      

  3.   

    我想在查询基本信息表时,显示民族名称,当然这只是一个民族表,还有诸如政治面貌这个的表,所以就想做个存储过程,分别调用
    create proc get_detailmsg
    as
    set nocount on
    begin
    select a.id ,a.name,b.mzh_desc 
    from generate a inner join minzhu b
    on a.minzhu_id=b.minzhu_id
    end
      

  4.   

    wdsimon(渴望成为高手▲▲▲▲▲) 
    我有很多像民族这样的表,如果要写连接的话,要写一大串连接了