写一个函数,GetMVenderList(m_id), 传入m_id(物料ID), 获取jxc_vender_material(表)中匹配m_id的供应商名称。其中供应商名称用逗号隔开。要求通过cursor实现这个函数。
注释:一条m_id 可能有多个供应商。

解决方案 »

  1.   


    IF OBJECT_ID(N'GetMVenderList') IS NOT NULL
    DROP FUNCTION GetMVenderList
    GOCREATE FUNCTION GetMVenderList(@m_id NVARCHAR(100))
    RETURNS NVARCHAR(1000)
    AS
    BEGIN
    DECLARE @STRSUPPLIERS NVARCHAR(1000)
    DECLARE CUR CURSOR FOR
    SELECT FSupplier FROM jxc_vender_material WHERE M_ID = @m_id
    OPEN CUR
    DECLARE @FS NVARCHAR(100)
    FETCH NEXT FROM CUR INTO @FS
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @STRSUPPLIERS = @STRSUPPLIERS + @FS + ','
    FETCH NEXT FROM CUR INTO @FS
    END
    CLOSE CUR
    DEALLOCATE CUR
    RETURN @STRSUPPLIERS
    END
    GO
      

  2.   


    IF OBJECT_ID(N'GetMVenderList') IS NOT NULL
        DROP FUNCTION GetMVenderList
    GOCREATE FUNCTION GetMVenderList(@m_id INT)
    RETURNS NVARCHAR(1000)
    AS
    BEGIN
    DECLARE @STRSUPPLIERS NVARCHAR(1000)
    SET @STRSUPPLIERS = ''
    DECLARE CUR CURSOR FOR
    SELECT FSupplier FROM jxc_vender_material WHERE M_ID = @m_id
    OPEN CUR
    DECLARE @FS NVARCHAR(100)
    FETCH NEXT FROM CUR INTO @FS
    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @STRSUPPLIERS = @STRSUPPLIERS + @FS + ','
        FETCH NEXT FROM CUR INTO @FS
    END
    CLOSE CUR
    DEALLOCATE CUR
    IF @STRSUPPLIERS <> ''
        SET @STRSUPPLIERS = LEFT(@STRSUPPLIERS,LEN(@STRSUPPLIERS) - 1)
    RETURN @STRSUPPLIERS
    END
    GO
      

  3.   


    --参数该为int即可
    IF OBJECT_ID(N'GetMVenderList') IS NOT NULL
        DROP FUNCTION GetMVenderList
    GOCREATE FUNCTION GetMVenderList(@m_id int)
    RETURNS NVARCHAR(1000)
    AS
    BEGIN
    DECLARE @STRSUPPLIERS NVARCHAR(1000)
    DECLARE CUR CURSOR FOR
    SELECT FSupplier FROM jxc_vender_material WHERE M_ID = @m_id
    OPEN CUR
    DECLARE @FS NVARCHAR(100)
    FETCH NEXT FROM CUR INTO @FS
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @STRSUPPLIERS = @STRSUPPLIERS + @FS + ','
    FETCH NEXT FROM CUR INTO @FS
    END
    CLOSE CUR
    DEALLOCATE CUR
    RETURN @STRSUPPLIERS
    END
    GO
      

  4.   

    这个函数怎么执行?exec GetMVenderList(35)这个怎么不对说35旁边有语法错误
      

  5.   


    SELECT DBO.GetMVenderList(35)