渡された色に基づいて結果を取得する SQL スクリプトがありますが、varchar として定義された変数のサイズを (50) に設定しない限り、結果は返されません。
使用する場合:like ''+@Colour+'%'
は機能しますが、必要のない、または必要のない結果が返される場合に備えて、実際には使用したくありません。
列 FieldValue の型は Varchar(Max) です (このフィールドはさまざまなものを格納できるため、変更できません)。これは aspdotnetstorefront パッケージの一部であるため、テーブルやフィールド タイプを実際に変更することはできません。
これは機能しません:
declare @Col VarChar
set @Col = 'blu'
select * from dbo.MetaData as MD where MD.FieldValue = @Colour
しかし、これはうまくいきます:
declare @Col VarChar (50)
set @Col = 'blu'
select * from dbo.MetaData as MD where MD.FieldValue = @Colour
コードは次のコンテキストで使用されますが、どちらの方法でも機能するはずです
<query name="Products" rowElementName="Variant">
<sql>
<![CDATA[
select * from dbo.MetaData as MD where MD.Colour = @Colour
]]>
</sql>
<queryparam paramname="@ProductID" paramtype="runtime" requestparamname="pID" sqlDataType="int" defvalue="0" validationpattern="^\d{1,10}$" />
<queryparam paramname="@Colour" paramtype="runtime" requestparamname="pCol" sqlDataType="varchar" defvalue="" validationpattern=""/>
</query>
何か案は?
また、私はサイズを設定することはできません<queryparam paramname="@Colour" paramtype="runtime" requestparamname="pCol" sqlDataType="varchar" defvalue="" validationpattern=""/>