首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

新手写个存储帮忙看上有什么有关问题

2012-08-15 
新手写个存储帮忙看下有什么问题create procedure sp_upd@m_file varchar(10)asBEGINDECLARE @m_str varch

新手写个存储帮忙看下有什么问题
create procedure sp_upd
@m_file varchar(10) 
as  
BEGIN
 DECLARE @m_str varchar(10)
 @m_str=substring('+@m_file+',1,3)
 if(m_str='新产品')
 begin
 update kh set kh.@m_file=cast((@m_file.价格/10000) as numeric(6,2)) from kh,@m_file where kh.编号=@m_file.编号
 end
 else
 begin
  update kh set kh.@m_file=cast((@m_file.旧价格/10000) as numeric(8,2)) from kh,@m_file where kh.编号=@m_file.编号
 end
END  
   


服务器: 消息 170,级别 15,状态 1,过程 sp_upd,行 6
第 6 行: '@m_str' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 sp_upd,行 9
第 9 行: '@m_file' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 sp_upd,行 13
第 13 行: '@m_file' 附近有语法错误。
  


[解决办法]

SQL code
create procedure sp_upd@m_file varchar(10)  as   BEGIN DECLARE @m_str varchar(10) set @m_str=substring('+@m_file+',1,3) if(@m_str='新产品') begin update kh set kh.@m_file=cast((@m_file.价格/10000) as numeric(6,2)) from kh where kh.编号=@m_file.编号 end else begin  update kh set kh.@m_file=cast((@m_file.旧价格/10000) as numeric(8,2)) from kh where kh.编号=@m_file.编号 endEND
[解决办法]
探讨
SQL code

create procedure sp_upd
@m_file varchar(10)
as
BEGIN
DECLARE @m_str varchar(10)
set @m_str=substring('+@m_file+',1,3)
if(@m_str='新产品')
begin
update kh set kh.@m_file=cast……

[解决办法]
探讨
update kh set kh.具体的列名=cast((@m_file.价格/10000) as numeric(6,2)) from kh where kh.编号=@m_file


有个问题,我的列名和@m_file的名称是一样的,是变化的

[解决办法]
SQL code
create procedure sp_upd@m_file varchar(10)  as   BEGIN DECLARE @m_str varchar(10) set @m_str=substring('+@m_file+',1,3) declare @col varchar(32) set @col =?---这里获取你的列名称 declare @price_old money,@price_new money set @price_old=?---获取价格(利用拆分字符串函数 拆分@m_file,从中获取 旧价格) set @price_new=?---获取价格(利用拆分字符串函数 拆分@m_file,从中获取 价格) declare @code varchar(32) set @code =?---获取编号(利用拆分字符串函数 拆分@m_file,从中获取 编号) declare @sql varchar(max) if(@m_str='新产品') begin set @sql ='update kh set '+@col+'= cast(('+@price_new+'/10000) as numeric(6,2)) from kh where kh.编号='''+@code+'''' exec(@SQL) --update kh set kh.具体的列名=cast((@m_file.价格/10000) as numeric(6,2)) from kh where kh.编号=@m_file end else begin SET @sql ='  update kh set '+@col+'=cast(('+@price_old+'/10000) as numeric(8,2)) from kh where kh.编号='''+@code+'''' exec (@SQL)    --update kh set kh.具体的列名=cast((@m_file.旧价格/10000) as numeric(8,2)) from kh where kh.编号=@m_file endEND
[解决办法]
变量声明:
DECLARE @m_file varchar(10)
[解决办法]
除了前面的语句错误
两个update语句有问题
说一说LZ想用存储过程干什么?

热点排行