SqlDataSource Ошибка при попытке запустить хранимую процедуру - PullRequest
0 голосов
/ 30 ноября 2011

при попытке проверить sqlDataSource с запущенной хранимой процедурой я получаю сообщение об ошибке: «Произошла ошибка при выполнении запроса. Пожалуйста, проверьте синтаксис команды и, если есть, типы и значения параметров и убедитесь, что они правильные. Не удалось включить ограничения. Одна или несколько строк содержат значения, нарушающие ненулевые, уникальные или ограничения внешнего ключа "

хранимая процедура:

USE [FAB28]
GO
/****** Object:  StoredProcedure [dbo].[spPLCIOFilter]    Script Date: 11/30/2011 15:39:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[spPLCIOFilter]
(
    @filter1 VARCHAR(50) = '%',
    @filter2 VARCHAR(50) = '%',
    @slot VARCHAR(50) = '%' 
)
AS
BEGIN
    SELECT
       [PLC] "PLC RIO"
      ,[SIGNAL] SIGNAL
      ,[RACK] RACK
      ,[SLOT] SLOT
      ,[POINT] POINT
      ,[CARD] CRAD
      ,[TAG] TAG
      ,[PROJ] PROJ
      ,[DESCRIPTION] "DESCRIPTION"
      ,[ADDRESS] "ADDRESS"

    FROM [FAB28].[dbo].[PLC_TAGS2]
    where [PLC] <> ''
    and [PLC] LIKE '%' + @filter1 + '%'
    and [PLC] LIKE '%' + @filter2 + '%'
    and [SLOT] LIKE '%' + @slot + '%'
    ORDER BY [PLC RIO],[RACK],[SLOT],[POINT]

END

странно то, что я успешно выполняю запрос внутри SP, когда я помещаю значения вместо переменных.

Может ли кто-нибудь мне помочь?

вот код sqlDataSource, использующий SP:

<asp:SqlDataSource ID="SqlDataSource_PLC_IO" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:FAB28ConnectionString_PlcIO %>" 
                        SelectCommand="spPLCIOFilter" SelectCommandType="StoredProcedure">
                        <SelectParameters>
                            <asp:ControlParameter ControlID="ddl_filter1" DefaultValue="" Name="filter1" 
                                PropertyName="SelectedValue" Type="String" />
                            <asp:ControlParameter ControlID="ddl_filter2" DefaultValue="" Name="filter2" 
                                PropertyName="SelectedValue" Type="String" />
                            <asp:ControlParameter ControlID="ddl_filter_slot" DefaultValue="" Name="slot" 
                                PropertyName="SelectedValue" Type="String" />
                        </SelectParameters>
                    </asp:SqlDataSource>

1 Ответ

0 голосов
/ 29 декабря 2011

Похоже, что предложение ORDER BY неверно:

ORDER BY [PLC RIO],[RACK],[SLOT],[POINT]

[PLC RIO] не является столбцом.Что происходит, когда вы меняете его на ...

ORDER BY [PLC],[RACK],[SLOT],[POINT]
...