SQL server2000用户自定义函数问题

做一道习题的时候遇到问题(@_@)●题目创建一个用户自定义函数Goodsorder,以货品名称为参数,返回该货品的订单记录。●问题描述书中只介绍了标量函数,后来再上网才知... 做一道习题的时候遇到问题(@_@)
●题目
创建一个用户自定义函数Goodsorder,以货品名称为参数,返回该货品的订单记录。
●问题描述
书中只介绍了标量函数,后来再上网才知道"内嵌表值函数"和"多语句表值函数",我用的是"内嵌表值函数"
代码如下:
USE market
GO
CREATE FUNCTION dbo.Goodsorder
(@goodsn VARCHAR(20))
RETURNS TABLE
AS

RETURN (SELECT * FROM orders WHERE 货品名称=@goodsn)
GO
SELECT * FROM Goodsorder('内存卡')
GO
-------------------------------------------我是华丽的分割线---------------------------------------------

orders表包含字段:订单号,货品名称,客户编号,数量,总金额,订货日期
其中"内存卡"在orders表中是有记录的,但是上面语句的执行结果却显示无记录(只有几个空字段),这是为什么呢?
WHITE_WIN 网友你说的"SELECT * FROM ORDERS WHERE 货品名称='内存卡' "这个语句肯定能得到结果,但是我的目的是用"内嵌表值函数"来完成这个操作,目前还是返回只有字段名的空TABLE
----------------------------------------------------
"SELECT * FROM ORDERS WHERE 货品名称='内存卡' "试了有结果
"RETURN (SELECT * FROM orders WHERE 货品名称 like '%'+@goodsn+'%')"这条语句试了还是无结果
----------------------------------------------------
我确定函数与数据表都在market这个数据库里,去掉USE MARKET就有结果了!这是为什么呢?
展开
 我来答
WHITE_WIN
2008-02-02 · TA获得超过6111个赞
知道大有可为答主
回答量:3759
采纳率:50%
帮助的人:1869万
展开全部
函数没有错误.
请你直接用SELECT * FROM ORDERS WHERE 货品名称='内存卡' 试试
或函数中改成语句改成:
RETURN (SELECT * FROM orders WHERE 货品名称 like '%'+@goodsn+'%')试试

我认为你条件里的字符品与表中不大一至,比如空单或全角空格,或是存在一些乱码字符.或是存在看不见的控制符.
==============================
我知道你的意思,但是我说了,你的存储过程可以输出,是正常的,我都试过了,有输出,如果说不正常,我认为是你的数据有误差,所以让你按下面一行改函数,或者规范你的表中的数据.
用上面的语句试验,不要说肯定有结果,要先试.
如果上面的语句有结果,那么函数也会有输出,请您试一下,好吗?
=========================
那么你干脆换成
RETURN (SELECT top 10 * FROM orders)
试试
另外,你确认你是在一个数据库操作的吗?
去掉USER MARKET
直接分别试语句和函数
注意你修改过的函数 与 有数据的表 是否在一个数据库量面
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式