| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 743 人关注过本帖
标题:求一个存储过程啊
只看楼主 加入收藏
cjwsql
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2013-6-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
求一个存储过程啊
请编写一存储过程PXXX (XXX为座号如P213),输入参数顾客号为G003,货物号为‘A10003’,数量为2,金额为292,如果此顾客号和货物号存在,则修改数量加上2,金额加上292,否则插入新记录。并写执行的过程
搜索更多相关主题的帖子: 记录 
2013-06-17 10:42
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:7 
能否把你的表名和列名也贴上来


♂ 死后定当长眠,生前何须久睡。♀
2013-06-17 11:28
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
由于不知道你的表结构,只能帮你到此,思路是这样的:
----------Procedure Name: spCreateOrUpdateYourTable----------
IF EXISTS (SELECT * FROM sys.procedures WHERE object_id = OBJECT_ID(N'[dbo].[spCreateOrUpdateYourTable]') AND type in (N'P'))
DROP PROCEDURE [dbo].[spCreateOrUpdateYourTable]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure spCreateOrUpdateYourTable
@CustomID varchar(max),
@GoodsId varchar(max),
@Totals int,
@Amount decimal
as
begin
if exists(select * from [YourTable] where CustomID=@CustomID and GoodsId=@GoodsId)
   update [YourTable] set
   Totals=Totals+@Totals,
   Amount=Amount+@Amount
   where CustomID=@CustomID
   and GoodsId=@GoodsId
else
   insert into [YourTable] values(@CustomID,@GoodsId,@Totals,@Amount)
end

♂ 死后定当长眠,生前何须久睡。♀
2013-06-17 11:42
chenyiqing23
Rank: 2
等 级:论坛游民
帖 子:84
专家分:53
注 册:2007-12-27
收藏
得分:7 
思路不错
2013-06-17 18:45
chenpengfei1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:15
专家分:64
注 册:2013-3-30
收藏
得分:7 
3楼这段代码写得好专业啊,只是想问一下
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
这几行不写可以么,有啥作用
2013-06-18 15:42
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
1.SET ANSI_NULLS ON是什么意思?

答:SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。

2.SET QUOTED_IDENTIFIER ON是什么意思?
答:
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。
当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。
有关更多信息,请参见使用标识符。文字可以由单引号或双引号分隔。(有关更多信息,请参见使用标识符。文字可以由单引号或双引号分隔。)
当 SET QUOTED_IDENTIFIER 为 ON 时,由双引号分隔的所有字符串都被解释为对象标识符。因此,加引号的标识符不必遵守 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (') 是文字字符串的一部分,则可以由两个单引号 ('') 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。
当 SET QUOTED_IDENTIFIER 为 OFF(默认值)时,表达式中的文字字符串可以由单引号或双引号分隔。如果文字字符串由双引号分隔,则可以在字符串中包含嵌入式单引号,如省略号。当在计算列或索引视图上创建或操作索引时,SET QUOTED_IDENTIFIER 必须为 ON。如果 SET QUOTED_IDENTIFIER 为 OFF,则计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。(有关计算列上的索引视图和索引所必需的 SET 选项设置的更多信息,请参见 SET 中的"使用 SET 语句时的注意事项"。)


♂ 死后定当长眠,生前何须久睡。♀
2013-06-19 16:05
cjwsql
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2013-6-17
收藏
得分:0 
回复 6楼 303770957
thank!!!
2013-06-20 00:29
快速回复:求一个存储过程啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.081945 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved