你这个存储过程没有仔细看,不过你可以参考一下sql server的帮助文档哦,如下:---------
--使用带有默认通佩符参数的简单存储过程
use pubs 
if exists (select name from sysobjects where name='au_info2' and type='P')
drop procedure au_info2
gocreate procedure au_info2
@lastname varchar(40) = 'd%',
@firstname varchar(20) = '%'
as
select au_lname, au_fname, title, pub_name
from authors a inner join titleauthor ta
   on a.au_id = ta.au_id inner join titles t
   on t.title_id = ta.title_id inner join publishers p
   on t.pub_id = p.pub_id
where au_fname like @firstname and au_lname like @lastname
go

解决方案 »

  1.   

    哦,你的是因为类型转换不对导致的
    --  declare @jg decimal(8,2)
    --  declare @jgl varcher(20)
    @jg和@jg1类型不一致
    这样应该可以的:
    set @jg1 = '%' + convert(varchar(10), @jg/@cs*100) + '%'
      

  2.   

    declare @sql varchar(8000)set @sql='select au_lname, au_fname, title, pub_name
    from authors a inner join titleauthor ta
       on a.au_id = ta.au_id inner join titles t
       on t.title_id = ta.title_id inner join publishers p
       on t.pub_id = p.pub_id
    where au_fname like '''+@firstname+''' and au_lname like '''+@lastname+'''exec (@sql)
      

  3.   

    对不起,刚才写的有点小小问题
    set @jg1 = '''%' + convert(varchar(10), @jg/@cs*100) + '%'''
    两边还要加多两个'号;)
      

  4.   

    好像你那樣做可以呀。
    我這樣都可以呀
    select  a=convert(varchar,convert(decimal(10,2),0.78659*100))+'%'