テーブル名を送信してそこからすべてのレコードを取得する手順を実行しようとしています..別の手順を作成する必要がないように...しかし、いくつかの問題に直面しています。
ALTER PROCEDURE [dbo].[getTableData]
-- Add the parameters for the stored procedure here
@tableName Varchar(100),
@whrFldName NVarchar(100)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @ActualTableName AS NVarchar(255)
SELECT @ActualTableName = QUOTENAME( TABLE_NAME )
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @tableName
DECLARE @sql AS NVARCHAR(MAX)
SELECT @sql = 'SELECT * FROM ' + @ActualTableName + ' WHERE ' +
@whrFldName + ' = ''y'' ;'
--PRINT @sql
EXEC(@SQL)
END
PHPコードはこれです..
$sql ="EXEC [dbo].[getTableData] 'tbl_services','serviceStatus'";
$rst = odbc_exec($connection, $sql);
$i = 0;
while($result = odbc_fetch_array($rst))
{
$returnPageData[$i] = $result;
$i++;
}
サーバーでは問題なく実行されますが、 PHPコードから呼び出すとnull が返されます。
ここで、フィールドを削除*
して配置すると、問題なく動作します.コードをよくテストしましたが、特にテキスト型フィールドで問題が発生します..
手順をこれに変更すると、正常に動作します..
ALTER PROCEDURE [dbo].[getTableData]
-- Add the parameters for the stored procedure here
@rowsPerPage as bigint,
@pageNum as bigint
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
WITH SQLPaging AS (
SELECT TOP(@rowsPerPage * @pageNum) ROW_NUMBER() OVER (ORDER BY creationDate DESC)
AS resultNum, *
FROM [DB_SB].[dbo].[tbl_blog] )
SELECT
blogTitle,
blogSlug,
blogImage,
substring( blogContent, 1, 210 ) AS blogContent,
creationDate,
blogAddedBy
FROM SQLPaging WITH (nolock) WHERE resultNum > ((@pageNum - 1) * @rowsPerPage)
終わり
しかし、これは論理的ではありません..毎回フィールドを送信すると..これは私が正確に望むものではありません..
何か解決策はありますか??助けてください...