执行存储过程,没有结果返回!!

litterant 2010-11-04 11:28:54

CREATE PROCEDURE get_sl (@gztotal float)
as
declare @getss1 float
declare @getss2 float
declare @getsl float
declare @getkcs float
declare @getyjs float

SELECT @getsl = 税率,@getkcs=速算扣除数
FROM 个税设置
WHERE ( 最小值>=@gztotal-2000 and 最大值<=@gztotal-2000) and 税基类型='税基'

select @getss1=@gztotal - 2000
select @getss2=@getss1 * @getsl
select @getyjs=@getss2 - @getkcs
print str(@getyjs)
RETURN
GO

 exce get_sl 5000
没有结果返回,请问是什么原因造成的??

但我单独执行以下SQL语句,有数据显示,说明数据库中有相关数据符合以下的条件。 
 SELECT 税率,速算扣除数 FROM 个税设置 WHERE (最小值<=5000 and 最大值>=5000) and 税基类型='税基'



...全文
220 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
litterant 2010-11-06
  • 打赏
  • 举报
回复
我自己把条件弄错了,WHERE ( 最小值>=@gztotal-2000 and 最大值<=@gztotal-2000) and 税基类型='税基'  应改成 WHERE ( 最小值<=@gztotal-2000 and 最大值>=@gztotal-2000) and 税基类型='税基'

谢谢,大家

firecc05 2010-11-05
  • 打赏
  • 举报
回复
print的结果在消息窗口中啊
王向飞 2010-11-05
  • 打赏
  • 举报
回复
print str(@getyjs)

select str(@getyjs)
dawugui 2010-11-04
  • 打赏
  • 举报
回复
CREATE PROCEDURE get_sl (@gztotal float)
as
begin
declare @getss1 float
declare @getss2 float
declare @getsl float
declare @getkcs float
declare @getyjs float

SELECT @getsl = 税率,@getkcs=速算扣除数
FROM 个税设置
WHERE ( 最小值>=@gztotal-2000 and 最大值<=@gztotal-2000) and 税基类型='税基'

select @getss1=@gztotal - 2000
select @getss2=@getss1 * @getsl
select @getyjs=@getss2 - @getkcs
print str(@getyjs)
RETURN
end
GO


你既然用了RETURN,返回什么东西?

参考帮助的示例:
使用 OUTPUT 参数
OUTPUT 参数允许外部过程、批处理或多条 Transact-SQL 语句访问在过程执行期间设置的某个值。下面的示例创建一个存储过程 (titles_sum),并使用一个可选的输入参数和一个输出参数。

首先,创建过程:

USE pubs
GO
IF EXISTS(SELECT name FROM sysobjects
WHERE name = 'titles_sum' AND type = 'P')
DROP PROCEDURE titles_sum
GO
USE pubs
GO
CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '%', @@SUM money OUTPUT
AS
SELECT 'Title Name' = title
FROM titles
WHERE title LIKE @@TITLE
SELECT @@SUM = SUM(price)
FROM titles
WHERE title LIKE @@TITLE
GO

接下来,将该 OUTPUT 参数用于控制流语言。



说明 OUTPUT 变量必须在创建表和使用该变量时都进行定义。


参数名和变量名不一定要匹配,不过数据类型和参数位置必须匹配(除非使用 @@SUM = variable 形式)。

DECLARE @@TOTALCOST money
EXECUTE titles_sum 'The%', @@TOTALCOST OUTPUT
IF @@TOTALCOST < 200
BEGIN
PRINT ' '
PRINT 'All of these titles can be purchased for less than $200.'
END
ELSE
SELECT 'The total cost of these titles is $'
+ RTRIM(CAST(@@TOTALCOST AS varchar(20)))

下面是结果集:

Title Name
------------------------------------------------------------------------
The Busy Executive's Database Guide
The Gourmet Microwave
The Psychology of Computer Cooking

(3 row(s) affected)

Warning, null value eliminated from aggregate.

All of these titles can be purchased for less than $200.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧